我的用户模型中有两个范围:
scope :hard_deactivated, where(:hard_deactivated => true)
scope :soft_deactivated, where(:soft_deactivated => true)
到目前为止,一切都很好
或者
我想创建一个范围:deactivated,其中将包括 hard_deactivated 为 true 或 soft deactivated 为 true 的所有用户。显然我可以这样做:
scope :deactivated, where("hard_deactivated = ? or soft_deactivated = ?", true, true)
但这感觉不是很干。
不是
另外我想创建一个逆作用域:not_hard_deactivated。我可以这样做:
scope :not_hard_deactivated, where(:hard_deactivated => false)
但同样,这感觉很糟糕,尤其是当我的范围变得更复杂时。在 not 子句中应该有某种方式或扭曲前一个范围生成的 SQL。