如何使用OR而不是AND链接范围查询? Rails4

时间:2016-02-02 16:07:52

标签: ruby-on-rails-4

我试图将2个查询放在一个范围内 - 我不确定我哪里出错了。你的建议将不胜感激

  • 我想只显示状态为“已接受”或“无”
  • 的用户
  • 我写了下面的范围并尝试了其他但没有成功
scope :active_recruiters, -> {where(['status = ? OR status = ?', 'Accepted', 'IS NULL'])}

3 个答案:

答案 0 :(得分:4)

如果要使用OR而不是AND用户AREL表约束链接

scope = where( where(status: 'Accepted').arel.constraints.reduce( :and ).or( where(status: nil).arel.constraints.reduce( :and ) ) )

答案 1 :(得分:3)

尝试scope :active_recruiters, -> { where(status: ['Accepted', nil]) }

答案 2 :(得分:1)

您尝试策划的查询将如下所示:

WHERE status = 'Accepted' OR status = 'IS NULL';

你可能正在寻找类似的东西:

WHERE status = 'Accepted' OR status is null;

在您的代码中尝试此操作

scope :active_recruiters, -> {where(['status = ? OR status ?', 'Accepted', 'IS NULL'])}

虽然更好,但是这个怎么样?

scope :active_recruiters, -> { where :status, [nil, 'Accepted'] }