rails-erdで多対多のリレーションの描画
tl;dr
rails-erdでE-R図描いたら多対多のリレーションが表示されない
→rails-erdはhas_manyやthroughを使ったリレーションは一方向にしか表示されない
らしいので結局railroadyを使った
使った環境がだいぶ前に構築したものだからかもしれないので備忘録の側面が強い
初めてrails触ってるのでそもそも何か間違ってるのかもしれない
以下備忘録代わりのメモ
作業内容
例えば記事に複数のカテゴリをつけられるようなリレーションモデルを作成する
プロジェクト生成と設定
生成と必要なライブラリの追加とか
1$ rails new blog
2$ vi Gemfile
3gem "railroady"
4gem "rails-erd"
5を末尾に追加
6$ bundle install
7$ rake db:create:all
DBの設定
DBの設定をする
1$ vi config/database.yml
モデルの生成
記事としてArticle カテゴリとしてCategoryモデルを作る
そして これらをつなぐ中間モデルArticleCategoryを作成する
1$ rails g scaffold Article title:text date:datetime body:text
2$ rails g scaffold Category name:text description:text
3$ rails g scaffold ArticleCategory article:references category:references
各モデルのリレーションを記述する
1$ vi app/models/article.rb
2class Article < ActiveRecord::Base
3 has_many :ArticleCategorys
4 has_many :Categorys, through: :ArticleCategorys
5end
6
7$ vi app/models/category.rb
8class Category < ActiveRecord::Base
9 has_many :ArticleCategorys
10 has_many :Articles, through: :ArticleCategorys
11end
12
13$ vi app/models/article_category.rb
14class ArticleCategory < ActiveRecord::Base
15 belongs_to :Article
16 belongs_to :Category
17end
モデルの反映
作成したモデルを反映する
1$ rake db:migrate
ER図の作成
rails-erd
rails-erdでのER図の生成
1$ rake erd filetype=png
プロジェクトのルートディレクトにerd.pngという名前でファイルが生成される
見やすいが多対多のモデルをhas_manyやthroughを使って記述すると一方向にしか表示されないらしい
railroady
とりあえず一通り出してみる
docディレクトリの下に画像ファイルが生成される
1$ rake diagram:all
svgで吐き出されるので適宜変換する