Самый быстрый способ получить повторяющуюся строку запроса
Мне нужно использовать следующую строку как часть моего запроса:
"(lower(first_name) LIKE lower(:first_param) AND lower(last_name) LIKE lower(:second_param)) OR (lower(first_name) LIKE lower(:second_param) AND lower(last_name) LIKE lower(:first_param))"
И это просто неуместно не использовать какой-то перечисляемый метод для его генерации вместо того, чтобы помещать его в код в текущей форме. Есть идеи?
2 ответа
Просто поместите логику в предложение where, как.
YourModel.where("(lower(first_name) LIKE lower(:first_param) AND lower(last_name) LIKE lower(:second_param)) OR (lower(first_name) LIKE lower(:second_param) AND lower(last_name) LIKE lower(:first_param))")
Используя область:
class User #or whatever
scope :match_full_name, ->(first_name, last_name) do
where("your query string", {:first_param => first_name, :second_param => last_name})
end
end
использование:
User.match_full_name("john", "smith")