【问题标题】:Rails activerecord LIKE AND clause errorRails activerecord LIKE AND 子句错误
【发布时间】:2012-08-16 09:56:02
【问题描述】:

这是我尝试在 rails 中使用的 activerecord 查询

q = "Manchester"
b = "John Smith"

Model.find(:all, :conditions => ["city ? AND name like ?", q, b])

但我在 Rails 控制台中收到此错误

ActiveRecord::StatementInvalid: SQLite3::SQLException: near "'Manchester'": 语法错误: SELECT "model".* FROM "model" WHERE (city 'Manchester' AND name like 'John Smith')

请帮忙!

【问题讨论】:

  • .. where city 'Manchester' name like 'John Smith'

标签: ruby-on-rails activerecord


【解决方案1】:

您也可以使用这种语法,它比试图找出哪个? 与哪个变量搭配更易读。我的意思是,如果你有 1 个或 2 个,那很好,但是一旦你有更多,它就会变得很丑。

Model.where("city LIKE :city AND name LIKE :name", { city: "%#{q}%", name: "%#{b}%"  })

占位符和哈希键可以是您喜欢的任何内容,只要它们匹配即可(例如,不要在哈希键中使用:cityhamster:)。

这样做的好处是您还可以使用一个变量进行多次搜索:

where("user LIKE :term OR email LIKE :term OR friends LIKE :term", { term: "%#{params[:term]}%"})

【讨论】:

    【解决方案2】:

    你错过了LIKE city

    Model.where('city LIKE ? AND name LIKE ?', "%#{q}%", "%#{b}%");
    

    【讨论】:

    【解决方案3】:

    试试这个:

    Model.find(:all, :conditions => ["city = ? AND name like ?", q, b])
    

    【讨论】:

    • 考虑指出差异/问题,尤其是微妙之处。
    猜你喜欢
    • 1970-01-01
    • 2018-01-19
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 2011-08-14
    • 2015-04-07
    • 1970-01-01
    • 2018-10-11
    相关资源
    最近更新 更多