搜索Fullname,在两个字段firstname,lastname rails

时间:2016-08-03 06:23:03

标签: ruby-on-rails

我在我的应用程序的搜索框中工作我有两个字段firstname和lastname。我为它们创建了一个full_name方法。

个人资料模型:

def full_name
"#{self.firstname} #{self.lastname}"
end

这是我的搜索方法

def self.search_by_full_name(search)
where("(fisrtname || lastname) LIKE :q", :q => "%#{search}%")
end

配置文件控制器:

def index
 if params[:search]
  @profile = Profile.search_by_full_name(params[:search])
  else
  @profile = Profile.all
end

4 个答案:

答案 0 :(得分:9)

你可以这样做

where("CONCAT_WS(' ', first_name, last_name) LIKE ?", "%#{query}%")

或者您可以创建范围

scope :search_by_full_name ->(query) { where("CONCAT_WS(' ', first_name, last_name) LIKE ?", "%#{query}%") }

答案 1 :(得分:1)

执行此简单操作

   def self.search_by_full_name(search)
   @names = search.split(" ")
   where("first_name LIKE ? AND last_name LIKE ?", "%#{@names[0]}","%#{@names[1]}" )
end

答案 2 :(得分:1)

我的建议和它更接近你拥有的东西

def self.search_by_full_name(search)
    where("fisrtname LIKE :search OR lastname LIKE :search", search: "%#{search}%")
end

这对我很有用。我使用sqlite

答案 3 :(得分:1)

您的查询有点错误:

def self.search_by_full_name(search)
  where("firstname like :search OR lastname like :search", search: "%#{search}%")
end