我试着寻找已经死亡或超过50岁的树木。想象一下,trees
表有两个属性,status
和age
。
我可以写:
Tree.where('age > ? OR status = ?', 50, 'dead')
如果我想找到年龄为50或100岁的树木怎么办?
Tree.where(age: [50,100])
是对的吗?是否有另一种方式来写这个?另外,为什么where子句在引号中?那是Arel吗?
答案 0 :(得分:0)
1
Tree.where('age > ? OR status = ?', 50, 'dead')
这是一个正确的where
子句,不,它不是Arel。在文档here中,您可以看到where
接受多种格式之一的条件。
Client.where("orders_count = '2'")
User.where(["name = ? and email = ?", "Joe", "joe@example.com"])
User.where({ name: "Joe", email: "joe@example.com" })
在你的情况下,它实际上是一个数组,而不是“引号”。
2
如果我想找到年龄为50或100岁的树木怎么办?
Tree.where(age: [50,100])
是的,这是正确的。或者您可以编写更明确的查询:
Product.where('age IN (?)', [50, 100])