Sql 如何获得更具体的rails查询&引用;例如;有效,=不';T

Sql 如何获得更具体的rails查询&引用;例如;有效,=不';T,sql,ruby-on-rails,ruby,activerecord,Sql,Ruby On Rails,Ruby,Activerecord,我对Rails非常陌生,正在尝试创建一个搜索字段来查询我的数据库。当我使用WHERE方法并使用“like”时,它是有效的,但它太宽泛了。如果一个人的姓是Smith,我搜索“I”,它将返回Smith,因为该字符串包含一个“I”。我怎样才能使它更具体?我四处搜索,阅读了文档,认为下面的内容应该有用,但它没有返回记录 这很有效 def self.search(query) where("last_name like ? OR email like ?", "%#{query}%", "%#{q

我对Rails非常陌生,正在尝试创建一个搜索字段来查询我的数据库。当我使用WHERE方法并使用“like”时,它是有效的,但它太宽泛了。如果一个人的姓是Smith,我搜索“I”,它将返回Smith,因为该字符串包含一个“I”。我怎样才能使它更具体?我四处搜索,阅读了文档,认为下面的内容应该有用,但它没有返回记录

这很有效

def self.search(query)
    where("last_name like ? OR email like ?", "%#{query}%", "%#{query}%")
end
这是不可能的

def self.search(query)
    where("last_name = ? OR email = ?", "%#{query}%", "%#{query}%")
end

您将需要更多地研究SQL,因为这是一个非常明确的SQL问题。SQL中的%运算符返回模糊匹配。你想要一个严格的匹配。所以

def self.search(query)
  where("last_name = ? OR email = ?", query, query)
end
或者更简洁地说:

scope :search, ->(query) { where('last_name = :query OR email = :query', query: query) }