ActiveRecord查询:其中一个字段不为true



我想查找字段不为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列设置一个默认值,或者至少需要一个值。这样您就不必采取这种变通方法。

相关内容

  • 没有找到相关文章

最新更新