如何使用includes()获取关联表?

时间:2014-08-03 06:44:17

标签: ruby-on-rails ruby-on-rails-3 activerecord

有4个表格,例如代码用户 user_profiles 社区

关联的设置如下所示。

代码 belongs_to:用户
代码 belongs_to:社区

用户 has_many:代码
用户 has_one:user_profile

UserProfile belongs_to:user

社区 has_many:代码

如果我想使用包含()

@communities = current_user.get_up_voted(Community)
@communities_ids = @communities.pluck(:id)

@codes = Code.includes(:user) \
             .where(:community_id => @communities_ids) \
             .order("users.active_at DESC") \
             .page(params[:page]) \
             .includes(:community, user: [:user_profile])

由于此部分,这不起作用。

includes(:community, user: [:user_profile])

但如果我将其切换到

includes(:community)

有效......

如何将user_profile添加到包含中?

1 个答案:

答案 0 :(得分:1)

你的方法看起来基本上应该正常工作......我会尝试使用没有数组的哈希为你的.includes,因为只有一个关联被添加。我还建议将两个不同的.includes语句合并为一个。像这样:

@codes = Code.includes(:community, user: :user_profile)
             .where(community_id: @communities_ids)
             .order("users.active_at DESC")
             .page(params[:page])