我想查找字段不为true的所有记录。工作的AR语法是:
Dog.where(:stray => [false, nil])
有没有一种不那么冗长的方式来查询"not true"?在任何地方都要迎合mysql的细微差别,这真的很糟糕。
命名作用域如何?
scope :not_stray, where("stray IS NULL OR stray = false")
然后使用:
Dog.not_stray
我认为您可以编写Dog.where(Dog.arel_table[:stray].not_eq(true))
。
顺便说一句,我建议您为数据库中的stray
列设置一个默认值,或者至少需要一个值。这样您就不必采取这种变通方法。