Ruby on rails Rails3:按第二个和第一个名字搜索用户?

Ruby on rails Rails3:按第二个和第一个名字搜索用户?,ruby-on-rails,Ruby On Rails,我想在我的用户模型中编写一个简单的搜索方法,它检查第二个名字和第一个名字,并返回匹配的用户。我现在有这个,但抛出了一个错误: def self.search(search) if search where("first_name like ? or second_name like ?", "%#{search}%") else all end end 错误是:在:first\u name like中绑定变量的数量错误(1代表2)?或者像

我想在我的用户模型中编写一个简单的搜索方法,它检查第二个名字和第一个名字,并返回匹配的用户。我现在有这个,但抛出了一个错误:

  def self.search(search)
    if search
      where("first_name like ? or second_name like ?", "%#{search}%")
    else
      all
    end
  end
错误是:
在:first\u name like中绑定变量的数量错误(1代表2)?或者像这样的第二个名字?

我怎样才能解决这个问题


谢谢

您有两个
,这意味着
其中
方法需要两个参数:

def self.search(search)
  if search
    where("first_name like ? or second_name like ?", "%#{search}%", "%#{search}%")
  else
    all
  end
end
我不确定你是否可以简化那些
,比如使用一个参数而不是重复的两个参数,但是你可以稍微整理一下:

def self.search(search)
  if search
    q = "%#{search}%"
    where("first_name like ? or second_name like ?", q, q)
  else
    all
  end
end

您有两个
,这意味着
其中
方法需要两个参数:

def self.search(search)
  if search
    where("first_name like ? or second_name like ?", "%#{search}%", "%#{search}%")
  else
    all
  end
end
我不确定你是否可以简化那些
,比如使用一个参数而不是重复的两个参数,但是你可以稍微整理一下:

def self.search(search)
  if search
    q = "%#{search}%"
    where("first_name like ? or second_name like ?", q, q)
  else
    all
  end
end
你可以用

where("first name like :name or second name like :name", :name => "%foo%")
你可以用

where("first name like :name or second name like :name", :name => "%foo%")

我猜您需要
def self.search(first,last)
,然后将它们都放在
where
子句末尾的dohickey中。我不太了解Rails,但这就是我要开始的地方。我猜您需要
def self.search(first,last)
,然后将这两个都放在
where
子句末尾的dohickey中。我不太了解Rails,但这就是我要开始的地方。这不起作用,我不认为它应该被标记为true。这不起作用,我认为它不应该被标记为true。