Ruby on rails Rails 3 ActiveRecord查询语法

Ruby on rails Rails 3 ActiveRecord查询语法,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,编辑 下面是工作语法 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 tha

编辑

下面是工作语法

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中将不同类型的查询链接在一起

谢谢。

不要引用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)
不要引用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)

您可以尝试
模型。其中(“name like(?),“%#{q}%”。其中(“value>?”,c)
。或者使用scope帮助进一步简化链接您可以尝试
Model.where(“name like(?),“%#{q}%”)。where(“value>?”,c)
。或者使用范围进一步帮助使用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)

对于使用AREL的轨道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)
您可以尝试Model.where(“name like(?),“%#{q}%”)。where(“value>?”,c)。您可以尝试Model.where(“name like(?),“%#{q}%”)。where(“value>?”,c)。