1
User
モデルでは、インスタンスメソッドactive_posts
が機能しません。ユーザーのアクティブ投稿をすべて取得する
私はuser
レコードをつかんでいますが、その後、そのレコードのために私はblogs
とposts
テーブルを結合し、そのuser
のためにのみアクティブposts
を返すために、ポストのactive
属性でフィルタリングする必要があります。
class User < ApplicationRecord
has_many :blogs
has_many :posts, through: :blogs
def active_posts
joins(blogs: :posts).merge(Post.active).distinct
end
end
class Blog < ApplicationRecord
belongs_to :user
has_many :posts
end
class Post < ApplicationRecord
belongs_to :blog
belongs_to :user, through: :blog
scope :active, -> {where(active: true}
end
私は、次のコマンドを実行します。
User.first.active_posts
そして、ここではエラーです:
NoMethodError Undefined method 'joins' on the user record
'join 'はクラスメソッドです - あなたはインスタンスからそれを呼び出していました。 – ReggieB