質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Active Record

Active Recordは、一つのオブジェクトに対しドメインのロジックとストレージの抽象性を結合するデザインパターンです。

Q&A

解決済

1回答

1748閲覧

既存DBへアクセスするRailsアプリの作成方法について

GenkiSugiyama

総合スコア86

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Active Record

Active Recordは、一つのオブジェクトに対しドメインのロジックとストレージの抽象性を結合するデザインパターンです。

0グッド

0クリップ

投稿2020/07/07 04:29

サービス側をRails APIモード + reactで作成したアプリの管理者用画面の機能をRails 非APIモードで別アプリとして作成予定です。

そのため、DB構造・モデルはAPIモードのものを引き継いで利用したいと考えています。

その場合のアプリの作成方法について教えていただきたいです。

自分で想定している方法は下記になります。
0. 「rails new not-api-app」でアプリ作成
0. 「rails g model」で各モデル作成、中身はAPIモードのソースをペースト?
0. マイグレーションファイルの作成、マイグレーションの実行は行わず、APIモードのschema.rbをペースト
0. APIモードのconfig/database.ymlをペースト
0. 1~4まで行ったら管理者用の機能を作っていく

上記の認識で良いのでしょうか・・?

また、管理者用アプリ立ち上げ後に、テーブルにカラムの追加等を行うときのマイグレーションはサービス側・管理者側の両方でマイグレーションファイルの作成・実行を行うのでしょうか?

①既存アプリとモデル、DBを共有するrailsアプリの立ち上げ方法
②複数アプリ同士のデータの整合性を取る方法について

上記2点について教えていただけると助かります。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

1:rails new not-api-app」でアプリ作成
2:rails g model」で各モデル作成、
中身はAPIモードのソースの必要な所だけペースト
3:APIモードのconfig/database.ymlをペースト

までやって、rails db:schema:dump` するとschema.rbができます。
それで 3 の正しさ確認。

db/migrationsをcopyするか否かは、DBの項目修正を何方でやるのか、によります。
両方でやると同期が厄介そう(同じ名前のmigrationファイルをやり取りする必要がでてくる)なので、API側だけでやりましょう、ということだとAPPサイドは不要です。

①既存アプリとモデル、DBを共有するrailsアプリの立ち上げ方法
何もしないでただ起動すればよいです

②複数アプリ同士のデータの整合性を取る方法について
これはアプリがどのようなデータをどのように扱うか、によります。
復数のアクセスが干渉しあうようなデータ処理構造ですと(例えばよく例に上がる銀行の口座)排他やトランザクション処理が必要になります。
ただ、それは APIとAPPの2アプリだからというより、APIだけでも必要なら必要です。
ので
APIで不要ならAPP追加しても大丈夫ではないかと。(無責任モード)

投稿2020/07/07 09:22

編集2020/07/07 21:53
winterboum

総合スコア23567

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

GenkiSugiyama

2020/07/13 07:31

ご回答いただきありがとうございます。 マイグレーションやデータの整合性の保ち方について質問したのは、管理者APP側だけで操作したい項目をDBのカラムとして追加したいと考えているためです。 すでに動いているサービスはECサイトで、追加したいカラムの一例として、注文情報テーブルに「商品の発送ステータス」のようなものを追加したいと考えています。(ユーザーの注文完了時はデフォルトで「未発送」→ユーザー住所へ商品を送付したタイミングで「発送済み」に変えたりして管理するステータス) 実際に上記ステータスに触れるのは管理者APP側のみだと思うのでこの場合、新たなマイグレーションを行うのは管理者APP側のみでも問題ないのでしょうか? APIとAPPどちらも同様のマイグレーションを実行するのは、両方でいじる必要があるカラムを追加する場合のみという認識で良いのでしょうか、、?
winterboum

2020/07/13 07:47

migrattionを作るのもmigreteを実行するのも、片方でやったほうが良いと思います。 migration の有無も db/schema.rbの存在もappの実行には不要です。 (migrationが存在するときはmigrate実行済かどうかのcheckは入りますが)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問