ActiveRecord查询:字段不为true

Gaz*_*zza 8 ruby activerecord ruby-on-rails arel

我想找到一个字段不正确的所有记录.这个工作的AR语法是:

Dog.where(:stray => [false, nil])
Run Code Online (Sandbox Code Playgroud)

是否有一种不那么冗长的查询"不真实"的方式?它真的很糟糕,无处不在满足这个mysql的细微差别.

Tom*_*m L 7

命名范围怎么样?

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

然后使用:

Dog.not_stray


Fro*_*ost 6

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

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