我试图在一个查询中获取用户的所有朋友的帖子和用户信息。
我曾尝试使用includes(:users),但这似乎不起作用并抛出错误。我认为手动加入是最好的解决方案:
@friends = @user.friends
.joins('inner join users on users.id = friends.user_id left outer join posts on users.id = posts.user_id')
.select('posts.*, users.*, friends.*')
如何从用户和帖子访问属性?做一个@ friends.inspect只显示来自friends表的属性,我不能做@ friends.posts或@ friends.users。
我的朋友和用户模型如下所示:
class Friend < ActiveRecord::Base
belongs_to :users
end
class User < ActiveRecord::Base
has_many :friends
has_many :users, through: :friends
end
答案 0 :(得分:0)
根据join
子句中的SQL,您的posts
与users
相关,而与friends
无关。这样的事情会起作用:
friends.map{|f| f.user.posts}.flatten
如果朋友有belongs_to :user
(单数&#34;用户&#34;)这将是传统的Rails,并反映在您使用的SQL中,那么正确的最重要因素