- IT Tips
- Ruby / Rails関連
READ MORE
RubyMineには「ダイアグラムの操作」という機能があります。
今回はその中の「Rails モデル依存関係ダイアグラム(Rails Model Dependency Diagram)」を使ってテーブル設計する方法を紹介します。
テーブル設計そのものについて
rails g model モデル名
レイアウトに意味を持たせられない
$ rails _5.2.1_ new diagram_sample --skip-bundle --skip-test
$ cd diagram_sample
$ rails g model book
次にdiagram_sampleプロジェクトをRubyMineで開き、ダイアグラムを表示します。
このように表示されていればOKです。
テーブル設計をするときにApplicationRecordクラスは不要なので、コメントアウトしてダイアグラム上に表示しないようにします。
# class ApplicationRecord < ActiveRecord::Base
# self.abstract_class = true
# end
ついでにbooksテーブルにカラムを追加します。
class CreateBooks < ActiveRecord::Migration[5.2]
def change
create_table :books do |t|
t.string :isbn, comment: 'ISBNコード'
t.string :title, comment: 'タイトル'
t.string :publisher, comment: '出版社'
t.date :publish_date, comment: '出版日'
t.timestamps
end
end
end
まとめると「Rails モデル依存関係ダイアグラム」はこのような仕組みになっています。
Book has many reviews
とReview belongs to book
の関係を作っていきます。
$ rails g model review comment:string book:references
class CreateReviews < ActiveRecord::Migration[5.2]
def change
create_table :reviews do |t|
t.string :comment
t.references :book, foreign_key: true
t.timestamps
end
end
end
class Review < ApplicationRecord
belongs_to :book
end
ここまでが、Review belongs to book
です。
class Book < ApplicationRecord
has_many :reviews
end
Book has many reviews
を追加しました。
Book has many reviews
の追加によってダイアグラムのレイアウト(BookとReviewの位置)が変わっています。
これは僕がレイアウトを変更した訳ではなく、RubyMineが自動でレイアウトを調整したためです。
左上の青いボタンで以下の表示、非表示を切り替えることができます。
左から順に
全部非表示にした場合
テーブルが増えてきてリレーションが複雑になると見辛くなりますが、レイアウトを変更すれば見やすいように調整できます。参考として2つ紹介します。(階層グループ・レイアウト、直交レイアウト以外もありますし、GUI操作でテーブルを移動することもできます。)
png形式でエクスポートできます。
エクスポートする際は表示されているレイアウトで出力されます。
以前は別のモデリングツールを使っていましたが、このやり方にしてからテーブル設計のスピードがかなり上がりました。
Railsの知識で直感的に書けるのと、レイアウトの調整に時間を取られないことが大きいです。
30日間は無料で使えるので、興味を持たれた方はぜひお試しください。