Mat*_*nes 4 activerecord ruby-on-rails
这是一个我试图在rails中使用的activerecord查询
q = "Manchester"
b = "John Smith"
Model.find(:all, :conditions => ["city ? AND name like ?", q, b])
Run Code Online (Sandbox Code Playgroud)
但我在rails控制台中收到此错误
ActiveRecord :: StatementInvalid:SQLite3 :: SQLException:near"'Manchester'":语法错误:SELECT"model".*FROM"model"WHERE(城市'Manchester'和名称'John Smith')
请帮忙!
你错过LIKE了city.
Model.where('city LIKE ? AND name LIKE ?', "%#{q}%", "%#{b}%");
Run Code Online (Sandbox Code Playgroud)
您还可以使用这种语法,它比试图找出?哪个变量与哪个变量匹配要更具可读性。我的意思是,如果你有 1 或 2 个,那很好,但是一旦你有更多,它就会变得很丑陋。
Model.where("city LIKE :city AND name LIKE :name", { city: "%#{q}%", name: "%#{b}%" })
Run Code Online (Sandbox Code Playgroud)
占位符和散列键可以是您喜欢的任何内容,只要它们匹配(例如,不要在散列键中使用:city然后hamster:)。
这样做的好处是您还可以使用一个变量进行多次搜索:
where("user LIKE :term OR email LIKE :term OR friends LIKE :term", { term: "%#{params[:term]}%"})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5296 次 |
| 最近记录: |