我需要使用以下字符串作为查询的一部分:
"(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))"
并不觉得不使用某种可枚举的方法来生成它而不是将其放在当前表单中的代码中。有任何想法吗?
答案 0 :(得分:1)
将逻辑放在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))")
答案 1 :(得分:0)
使用范围:
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")