Допустим, у меня есть модель Book
с полем word_count
, среди потенциально многих других подобных полей.
Какой хороший способ объединить условия в «расширенном поиске» базы данных?В приведенном выше примере у меня была бы форма поиска с полями для "word count between ___ and ___
".Если пользователь заполняет первое поле, я хочу вернуть все книги с количеством слов, превышающим это значение;Аналогичным образом, если пользователь заполняет второе поле, я хочу вернуть все книги с количеством слов меньше этого значения.Если оба значения заполнены, то я хочу вернуть количество слов в этом диапазоне.
Очевидно, что если я сделаю
Book.where(:word_count => <first value>..<second value>)
, то это сломается, если будет заполнено только одно из полей. Есть ли способ элегантно решить эту проблему?Имейте в виду, что может быть много похожих условий поиска, поэтому я не хочу создавать отдельные запросы для каждой возможной комбинации.
Извините, если этот вопрос задавался ранее, но поиск по сайту не дал результатовникаких полезных результатов пока нет.