[Ruby on rails]3つのテーブルをアソシエーションさせる時
たとえば、投稿者がツイートを登録するアプリがあるなら。
usersテーブル
tweetsテーブル
がデータベース上に必要になりますね。
では、tweet1件1件に、コメントを登録できるようにするにはどうなるか?
commentsテーブルが必要となります。
この3テーブルにアソシエーションを組むとき
userは
・複数のtweetsを持ってる
・複数のcommentsを持ってる
tweetは
・複数のcommentsを持ってる
・userに所属する(持たれてる) user_idカラムが必要になる
commentsは
・tweetに所属する tweet_idカラムが必要になる
・userに所属する user_idカラムが必要になる
これをmodelに設定すると
・持つ has_many
・所属する belongs_to
models/comment.rb
class Comment < ActiveRecord::Base belongs_to :tweet #tweetsテーブルとのアソシエーション belongs_to :user #usersテーブルとのアソシエーション end
models/tweet.rb
class Tweet < ActiveRecord::Base belongs_to :user has_many :comments #commentsテーブルとのアソシエーション end
models/user.rb
class User < ActiveRecord::Base #deviseの適用記述など has_many :tweets has_many :comments #commentsテーブルとのアソシエーション end