在Rails中访问Join属性4

时间:2015-02-26 04:17:15

标签: sql ruby-on-rails ruby join

我试图在一个查询中获取用户的所有朋友的帖子和用户信息。

我曾尝试使用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

1 个答案:

答案 0 :(得分:0)

根据join子句中的SQL,您的postsusers相关,而与friends无关。这样的事情会起作用:

friends.map{|f| f.user.posts}.flatten 

如果朋友有belongs_to :user(单数&#34;用户&#34;)这将是传统的Rails,并反映在您使用的SQL中,那么正确的最重要因素