У меня есть три таблицы: listings
, amenities
и listing_amenities
. У меня есть фильтр, в котором пользователи могут фильтровать списки по удобствам, и в моем контроллере я принимаю их фильтр как массив amenity
описаний. Я пытаюсь отфильтровать списки, в которых есть ВСЕ эти amenities
. В настоящее время я могу фильтровать, но он только проверяет, есть ли у listings
хотя бы ОДИН из предоставленных amenities
.
Текущий запрос:
scope :filter_by_amenities, ->(amenities) { # amenities is array of descriptions
includes(:listing_amenities)
.where(listing_amenities: {
:amenity_id => (
Amenity.where(:description => amenities)
)
})
}
Как я могу изменить запрос, чтобы он возвращал только списки, в которых есть ВСЕ удобства, а не хотя бы один?