【问题标题】:rails query has_many through relationshipsrails 通过关系查询 has_many
【发布时间】:2015-02-04 00:08:27
【问题描述】:

我有 4 个班级:UserPlatformListingItem

用户有很多平台。

平台通过列表有很多项目。

Listing属于item,属于platform。

项目有很多列表。

我将如何获取所有用户项?

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 我想让用户与平台分开。任何不向用户添加 has_many 的解决方案?
    【解决方案2】:

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

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

    【讨论】:

    • 商品不属于平台... 关系是:平台通过listing有很多商品。 Listing属于item,属于platform。项目有很多列表。
    • 那你为什么不添加这个关系呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-12
    相关资源
    最近更新 更多