我正在尝试在我的一个 Active Record 模型上创建一个搜索方法。
我希望用户能够在数据库中搜索记录。
我知道我可以这样做:Model.where('field like ?', "%#{query}%')
但这不仅仅是一个字段,它是两个字段(名字和姓氏)。但我不想单独搜索它们,我想连接名字和姓氏并搜索连接字段类似于搜索查询的位置。
这可以像连接 SQL 字段那样用 Active Record 完成吗?什么是最佳解决方案?
最佳答案
在您的模型中创建一个类方法,如下所示:
def self.search_by_full_name(query)
where("CONCAT_WS(' ', first_name, last_name) LIKE ?", "%#{query}%")
end
但在 Rails 中,在这种情况下更常见的是声明一个作用域而不是一个类方法,像这样:
scope :search_by_full_name ->(query) { where("CONCAT_WS(' ', first_name, last_name) LIKE ?", "%#{query}%") }
关于mysql - 像搜索查询一样连接字段的 Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28946686/