我想在我的用户模型中编写一个简单的搜索方法,它会检查agisnt的第二个名字和名字,并返回匹配的用户。我现在有这个,但抛出一个错误:
def self.search(search)
if search
where("first_name like ? or second_name like ?", "%#{search}%")
else
all
end
end
错误是:wrong number of bind variables (1 for 2) in: first_name like ? or second_name like ?
我该如何解决这个问题?
谢谢
答案 0 :(得分:3)
您有两个?
,这意味着where
方法需要两个参数:
def self.search(search)
if search
where("first_name like ? or second_name like ?", "%#{search}%", "%#{search}%")
else
all
end
end
我不确定你是否可以简化那些like
以使用一个参数而不是重复的两个参数,但是你可以将它清理一下:
def self.search(search)
if search
q = "%#{search}%"
where("first_name like ? or second_name like ?", q, q)
else
all
end
end
答案 1 :(得分:2)
您可以使用
where("first name like :name or second name like :name", :name => "%foo%")