【发布时间】:2016-08-03 20:08:25
【问题描述】:
在我的应用程序中,我有一个包含三列的客户模型,first_name、middle_name 和 last_name。我在模型中有一个执行搜索的方法:
class Customer < ActiveRecord::Base
belongs_to :user
def self.search(search, user)
if search
.where('first_name LIKE ? OR middle_name LIKE ? OR last_name LIKE ?', "%#{search}%", "%#{search}%", "%#{search}%", "%#{search}%")
.where(user: user)
else
where(user: user)
end
end
end
这个搜索功能的问题是它一次只允许搜索三列之一。
例如,客户的 first_name 为“foo”,middle_name 为“bar”,last_name 为“baz”。单独搜索“foo”、“bar”或“baz”会返回结果,但“foo bar”或“bar baz”不会。 允许在所有三列中进行搜索的最佳方式是什么?
【问题讨论】:
标签: ruby-on-rails ruby search