2017-07-25 60 views
0

我有和對象搭乘並且騎着belongs_to公司。獲取Rails 5中的所有獨特關聯5

我得到的遊樂設施

@rides = Ride.where(...) 

我現在需要的是那些騎的所有企業存儲@companies,我希望能有每家公司只有一次的名單,即使兩個遊樂設施具有相同的公司。

回答

1

你可以得到所有獨特公司作爲下面的所有遊樂設施的:

@rides = Ride.includes(:company).where(...) 

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

注:includes將裝載在單個查詢中的所有公司,關聯到造成rides(防止N + 1查詢問題)。

0

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")