如何写范围为不包含或null或空?

时间:2014-02-13 21:41:14

标签: ruby-on-rails ruby ruby-on-rails-4 scope

我想知道如何正确编写sql中的范围:

Caterer.where('robots NOT LIKE :noindex OR robots IS NULL OR robots IS ?', smr: "%noindex%", "").where(active: true)

现在它看起来真的很难看。

1 个答案:

答案 0 :(得分:1)

scope :noindex_robots, -> { where('robots NOT LIKE :noindex OR robots IS NULL OR robots IS ?', smr: "%noindex%", "") }
scope :active, -> { where(active: true) }

并使用它:Caterer.active.noindex_robots

如果你描述noindex_robots背后的逻辑,我也可以尝试重构它。