我有和對象搭乘並且騎着belongs_to公司。獲取Rails 5中的所有獨特關聯5
我得到的遊樂設施
@rides = Ride.where(...)
我現在需要的是那些騎的所有企業存儲@companies
,我希望能有每家公司只有一次的名單,即使兩個遊樂設施具有相同的公司。
我有和對象搭乘並且騎着belongs_to公司。獲取Rails 5中的所有獨特關聯5
我得到的遊樂設施
@rides = Ride.where(...)
我現在需要的是那些騎的所有企業存儲@companies
,我希望能有每家公司只有一次的名單,即使兩個遊樂設施具有相同的公司。
你可以得到所有獨特公司作爲下面的所有遊樂設施的:
@rides = Ride.includes(:company).where(...)
@companies = @rides.map(&:company).uniq
注:includes
將裝載在單個查詢中的所有公司,關聯到造成rides
(防止N + 1查詢問題)。
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")