修改
这是工作语法......
Model.where('name like ?', "%#{q}%").where('value > ?', c)
或
Model.where("name like (?)","%#{q}%").where("value > ?",c)
感谢海报帮助他们。
原始问题
我无法理解活动记录语法。
这是我正在尝试做的事情
q = "John"
c = 50
Model.where('name like ? AND value > ?', "%#{q}%", "%#{c}%")
这是错误的语法。
我想要实现的是
name like John AND value greater than 50
如何在ActiveRecord中将不同类型的查询链接在一起?
感谢。
答案 0 :(得分:4)
不要引用q和c:
Model.where('name like ? AND value > ?', q, c)
Rails会自动将变量转换为适合您的字符串。
链接是指where(),select(),order()函数的链接,例如,这相当于上面的内容:
Model.where('name like ?', q).where('value > ?', c)
如果您只想为%位添加%通配符,则可以执行以下操作:
Model.where('name like ?', "%#{q}%").where('value > ?', c)
答案 1 :(得分:1)
您可以尝试Model.where("name like (?)","%#{q}%").where("value > ?",c)
。或使用范围来帮助进一步轻松链接
答案 2 :(得分:1)
对于使用AREL的Rails 3,
ut = User.arel_table
users = User.where(ut[:name].matches("%#{q}%").and(ut[:value].gt(c)))
# SELECT "users".* FROM "users" WHERE ("users"."name" LIKE '%John%' AND "users"."value" > 50)