我有4个课程:User
,Platform
和Listing
以及Item
。
用户有很多平台。
平台在列表中有很多项目。
列表属于item,属于platform。
项目有很多列表。
如何获取所有用户的项目?
我现有的解决方案(涉及高效的内存解决方案)是:
user.platforms.includes(:items).inject([]) { |result, x| result + x.items }
答案 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)