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)。