Самый быстрый способ получить повторяющуюся строку запроса

Мне нужно использовать следующую строку как часть моего запроса:

"(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")
Другие вопросы по тегам