如何缩小 Rails 中表格的结果范围?
我正在使用 Rails 4.0.2 和 PostgreSQL 并且可以
users = User.where(:flag1).where(:flag2 => nil)
但不是
users = User.where(:flag1).where(:flag2 => nil).where(:flag3 => nil)
要得到
#<ActiveRecord::Relation []>
我错过了什么吗?
我已经尝试过使用 Squeel,并且可以类似地做
users = User.where{(flag1) & (flag2 == nil)}
但不是
users = User.where{(flag1) & (flag2 == nil) & (flag3 == nil)}
产生
!! #<TypeError: Cannot visit Squeel::Nodes::Predicate>
关于如何使用和/或不使用 Squeel 的任何想法?谢谢!
更新
正常查询的问题是由 flag2 和 flag3 值可以是 nil 或 false 引起的。我试图在 Squeel 中考虑到这一点。
我可以
User.where{(flag1) & ((flag2.eq nil) | (flag2.eq false))}
但不是
User.where{(flag1) & ((flag2.eq nil) | (flag2.eq false)) & ((flag3.eq nil) | (flag3.eq false))}
返回
!! #<TypeError: Cannot visit Squeel::Nodes::Or>