has_many :throughの使い方
よく言われるのは、多対多の関係で使うと言うものです。
ということで、多対多のモデル関係で試してみます。
例えば、「ユーザー(User)」が「ブログ(Blog)」を投稿し、ブログの「コメント(Comment)」をつけ、ユーザーに関連する「コメント」を取得する場合です。
railg g model User name:string rails g model Blog body:text user:references rails g model Comment body:text user:referenses blog:references
Userモデル
class User < ActiveRecord::Base has_many :blogs has_many :comments, through: :blogs end
Blogモデル
class Post < ActiveRecord::Base belongs_to :user has_many :comments end
Commentモデル
class Comment < ActiveRecord::Base belongs_to :blog belongs_to :user end
例えば、下記のようにしたらユーザーがコメントを取得できます。 コンソール
user = User.first user.comments→関連する結果すべて出る