ブログアプリ⑨(タグのテーブルを作ろう)

タグのテーブルをつくる

$ rails g model tag tag:string
Running via Spring preloader in process 27600
      invoke  active_record
      create    db/migrate/20181206042331_create_tags.rb
      create    app/models/tag.rb

記事とタグの中間テーブルをつくる

$ rails g model article_tag article:references tag:references
Running via Spring preloader in process 34479
      invoke  active_record
      create    db/migrate/20181206042916_create_article_tags.rb
      create    app/models/article_tag.rb

そうそう。中間テーブルを作るときにreferences型を指定して作ったら、出来上がったモデルファイルに初めからアソシエーションが記述されてた。便利ー

f:id:d_riko:20181206133240p:plain

articleモデルと今作ったtagモデルにもアソシエーションを設定したげる

models/article.rb

class Article < ApplicationRecord
  has_many :article_tags
  has_many :tags, through: :article_tags
end
models/tag.rb

class Tag < ApplicationRecord
  has_many :article_tags
  has_many :articles, through: :article_tags
end

マイグレートする

$ bundle exec rake db:migrate
== 20181206042331 CreateTags: migrating =======================================
-- create_table(:tags)
   -> 0.0384s
== 20181206042331 CreateTags: migrated (0.0386s) ==============================

== 20181206042916 CreateArticleTags: migrating ================================
-- create_table(:article_tags)
   -> 0.0293s
== 20181206042916 CreateArticleTags: migrated (0.0294s) =======================

これで必要なテーブルができた!

f:id:d_riko:20181206134239p:plain

f:id:d_riko:20181206134249p:plain

次はタグを新規につけられるようにするよ