ActiveRecord查询:字段不为true

时间:2012-07-17 13:34:35

标签: ruby-on-rails ruby activerecord arel

我想查找字段不为真的所有记录。适用于此的AR语法是:

Dog.where(:stray => [false, nil])

是否有一种不那么冗长的查询方式,而不是真的'?在任何地方都不得不满足这个mysql的细微差别。

2 个答案:

答案 0 :(得分:7)

命名范围怎么样?

scope :not_stray, where("stray IS NULL OR stray = false")

然后使用:

Dog.not_stray

答案 1 :(得分:6)

我认为你可以写Dog.where(Dog.arel_table[:stray].not_eq(true))

作为旁注,我建议您为数据库中的stray列设置默认值,或者至少需要一个值。这样你就不必进行这种解决方法了。