【问题标题】:Get all unique associations in Rails 5获取 Rails 5 中的所有唯一关联
【发布时间】:2017-07-25 12:50:02
【问题描述】:

我有并且反对游乐设施,并且骑属于公司。

我得到一个游乐设施列表

@rides = Ride.where(...)

我现在需要将所有这些游乐设施的公司存储在 @companies 中,我希望每个公司只拥有一次,即使两个游乐设施属于同一公司。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 ruby-on-rails-5


    【解决方案1】:

    您可以获得所有游乐设施的所有独特公司,如下所示:

    @rides = Ride.includes(:company).where(...)
    
    @companies = @rides.map(&:company).uniq
    

    注意:includes 将在单个查询中加载与生成的rides 关联的所有公司(防止 N+1 查询问题)。

    【讨论】:

      【解决方案2】:

      PostgresQL 在完成此类工作方面非常高效,比 Ruby 高得多。

      你可以写:

      @rides = Ride.includes(:company).where(foo: "bar")

      @companies = @rides.distinct.pluck('companies.name')

      这将导致 SQL 查询:

      SELECT DISTINCT companies.name FROM "rides" LEFT OUTER JOIN "companies" ON "companies"."id" = "rides"."company_id" WHERE (rides.foo IS "bar")

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多