В настоящее время я использую области в своей модели для выполнения поиска в базе данных. Я могу сложить эти области, и он выведет результаты, соответствующие всем параметрам.
scope :search_between, lambda{|begin_date, end_date|
where "sub.date BETWEEN ? AND ?", begin_date, end_date
}
У меня возникли проблемы с интеграцией поиска по ключевым словам, который будет искать всю базу данных и выводить результаты, содержащие сумму ключевых слов. Я хотел бы сделать что-то вроде этого (отображается для простоты):
scope :keywords, lambda{|search|
search.chomp.split(/,\s*/) do |item|
where "date like ? or city like ? or state like ?", "%#{item}%" and
where "date like ? or city like ? or state like ?", "%#{item}%" and
where "date like ? or city like ? or state like ?", "%#{item}%"
end
}
В настоящее время я использую что-то подобное, чтобы позаботиться о поиске нескольких столбцов:
scope :keywords, lambda{|search|
search.chomp.split(/,\s*/) do |item|
where(Sub.column_names.map {|cn| "#{cn} like ?" }.join("or "), "%#{item}%"] Sub.column_names.size)).join(' AND ')
end
}
Моя проблема в том, что я хочу сделать несколько "где()" в области видимости. Возможно ли это и если да, то как?