这是我试图在rails中使用的activerecord查询
q = "Manchester"
b = "John Smith"
Model.find(:all, :conditions => ["city ? AND name like ?", q, b])
但我在rails console中收到此错误
ActiveRecord :: StatementInvalid:SQLite3 :: SQLException:near“'Manchester'”:语法错误:SELECT“model”。* FROM“model”WHERE(城市'Manchester'和名称'John Smith')
请帮忙!
答案 0 :(得分:8)
LIKE
错过了city
。
Model.where('city LIKE ? AND name LIKE ?', "%#{q}%", "%#{b}%");
答案 1 :(得分:4)
您也可以使用这种语法,它比尝试找出哪个?
与哪个变量更具可读性。我的意思是如果你有1或2它没关系,但是一旦你有更多它就变得非常难看。
Model.where("city LIKE :city AND name LIKE :name", { city: "%#{q}%", name: "%#{b}%" })
占位符和哈希键可以是您喜欢的任何内容,只要它们匹配(例如,不要在哈希键中使用:city
然后hamster:
)。
关于这一点的好处是你也可以使用一个变量进行多次搜索:
where("user LIKE :term OR email LIKE :term OR friends LIKE :term", { term: "%#{params[:term]}%"})
答案 2 :(得分:3)
试试这个:
Model.find(:all, :conditions => ["city = ? AND name like ?", q, b])