rails 4 范围 NOTNULL 重构

rails 4 scope NOTNULL refactor

我必须创建一个范围来创建活动作业,但这感觉有点奇怪,老实说它与 PostgreSQL 紧密耦合:

  scope :active, -> { where('reviewed_at NOTNULL and paid_at NOTNULL and end_at >= ?', Date.today) }

你会改写这个吗?谢谢

您可以在 rails 4

中使用 where.not
scope :active, -> { where.not(reviewed_at: nil).where.not(paid_at: nil).where('end_at >= ?', Date.today) }

一个更短更漂亮的版本是这样的:

scope :active, -> { where.not(reviewed_at: nil, paid_at: nil).where('end_at >= ?', Date.today) }