使用LIKE和OR传递参数的范围来搜索两个不同的列

时间:2012-01-05 22:54:53

标签: ruby-on-rails-3 activerecord arel

做一个LIKE和OR传递参数的最佳方法是什么?

我有一个自动填充字段,用户可以在其中键入邮政编码(编号)或郊区名称(字符串),并且可以在两个不同的列中触发搜索。

我现在正在做以下事情,但它不起作用:

scope :search_by_postcode, lambda { |q| where("postcode LIKE ? OR postcode_name LIKE ?", "%#{q}%", "%#{q}%").limit(10) }

绕过它的方法是什么?

1 个答案:

答案 0 :(得分:1)

值得考虑Squeel

您的范围将如下所示:

scope :first_ten_by_postcode_or_suburb_name, lambda { |q| where{postcode.matches(q) | suburb_name.matches("%#{q}%")}.limit(10) }