2
我有兩個型號,Facility
和Category
匹配:軌道4 - 連接查詢所有陣列
class Facility < ActiveRecord::Base
has_and_belongs_to_many :categories
end
class Category < ActiveRecord::Base
has_and_belongs_to_many :facilities
end
說我有三個可能的Category
記錄,與name
: 「A類」, 「B類」 和「C類」。
我想獲得均爲「A類」和「B類」的所有Facility
記錄。
我最近的查詢是:
Facility.joins(:categories).merge(Category.where(Category.arel_table[:name].matches_all(["Category A", "Category B"])))
產生的SQL語句:
SELECT "facilities".* FROM "facilities" INNER JOIN "categories_facilities" ON "categories_facilities"."facility_id" = "facilities"."id" INNER JOIN "categories" ON "categories"."id" = "categories_facilities"."category_id" WHERE ("categories"."name" ILIKE 'Category A' AND "categories"."name" ILIKE 'Category B')
這不返回任何結果。
使用純Ruby(例如Facility.all.select ...
),我知道在數據庫中至少有一個Facility
屬於既屬於「類別A」也屬於「類別B」。
如何在Rails或使用arel執行此查詢?