rails通过关系查询has_many

时间:2015-02-03 14:47:45

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

我有4个课程:UserPlatformListing以及Item

用户有很多平台。

平台在列表中有很多项目。

列表属于item,属于platform。

项目有很多列表。

如何获取所有用户的项目?

我现有的解决方案(涉及高效的内存解决方案)是:

user.platforms.includes(:items).inject([]) { |result, x| result + x.items }

2 个答案:

答案 0 :(得分:1)

您可以在User模型中添加关系。 ActiveRecord会关注您的查询。

class User < ActiveRecord::Base
  has_many :platforms
  has_many :items, through: :platforms
end

答案 1 :(得分:0)

您可以使用从Item开始的查询,并使用user.id作为参数。

Item.joins(:platforms).where("platform.user_id = ?", user.id)