如何选择所有用户帖子和用户的朋友帖子?我尝试使用下面的代码查询,但它只是给了我所有的帖子,包括不是朋友的用户。
Post.includes(:user, :user {friends: :posts}).where(is_private: false)
用户类
class User < ActiveRecord::Base
has_many :posts
has_many :friendships
has_many :friends, through: :friendships
end
友谊课
class Friendship < ActiveRecord::Base
belongs_to :user
belongs_to :friend, class_name: 'User'
end
发布课程
class Post < ActiveRecord::Base
validates :upost, presence: true
belongs_to :user
end
任何人都可以向我解释为什么这个查询不起作用?
Post.includes(:user, :user {friends: :posts}).where(user: {id: 1})
我很感激任何指示。
答案 0 :(得分:0)
包含不做你想做的事。
您的代码会抓取所有公开(:private=>false)
帖子,然后加载users
及其friends
。
您想要做的事情可以通过where
和joins
试试这个
Post.joins(:user, :user=>[:friends]).where(is_private: false)