rails 4:获取所有用户帖子和用户的朋友帖子。 Eager Loading Query无效

时间:2016-01-13 06:32:53

标签: ruby-on-rails ruby-on-rails-4

如何选择所有用户帖子和用户的朋友帖子?我尝试使用下面的代码查询,但它只是给了我所有的帖子,包括不是朋友的用户。

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})

我很感激任何指示。

1 个答案:

答案 0 :(得分:0)

包含不做你想做的事。 您的代码会抓取所有公开(:private=>false)帖子,然后加载users及其friends。 您想要做的事情可以通过wherejoins

来完成

试试这个

Post.joins(:user, :user=>[:friends]).where(is_private: false)