У меня есть класс Filter, который я использую для фильтрации списков подписок. В моем классе фильтра у меня есть метод Листинг, который возвращает все списки, которые соответствуют критериям, введенным пользователем в форме. Вот класс фильтра.Rails Query, если Array содержит другое Array
class Filter < ActiveRecord::Base
attr_accessible :air_conditioning, :available_rooms, :bathrooms, :furnished, :negotiable, :new, :parking, :maximum_price, :private_bathroom, :show, :term, :total_rooms, :utilities, :washer_dryer
serialize :term
def listings
@listings ||=find_listings
end
private
def find_listings
listings=Listing.order(:price)
listings=listings.where("listings.price <= ?", maximum_price) if maximum_price.present?
listings=listings.where(total_rooms: total_rooms) if total_rooms.present?
listings=listings.where(available_rooms: available_rooms) if available_rooms.present?
listings=listings.where(bathrooms: bathrooms) if bathrooms.present?
listings=listings.where(term: term)
listings=listings.where(furnished: furnished)
listings=listings.where(negotiable: negotiable)
listings=listings.where(utilities: utilities)
listings=listings.where(air_conditioning: air_conditioning)
listings=listings.where(parking: parking)
listings=listings.where(washer_dryer: washer_dryer)
listings=listings.where(private_bathroom: private_bathroom)
listings
end
end
Там проблема есть линия
listings=listings.where(term: term)
Term сохраняется в виде строки, которая может быть сериализации. Aka ['Summer', 'Fall] Пользователь проверяет флажки, чтобы выбрать, для каких терминов доступен сублет. Однако, что предложение where терпит неудачу каждый раз. Как я могу проверить, содержатся ли элементы, выбранные пользователем, в терминах для листинга?
Это не запрос, хотя –
Вы правы, это не вопрос. Какая ошибка возникает при попытке запустить код, который вы опубликовали? Как выглядит схема листинга? Поскольку это сериализованное поле для объекта Ruby, вы, вероятно, не можете использовать его в SQL-запросе. Но вы можете отфильтровать его после получения результатов из базы данных, примерно так: listings.find_all {| l | l.include? срок } – Ari