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で吐き出されるので適宜変換する

参考記事