Rails返回模型子集,a = false总是,a = true有时

时间:2018-04-09 15:13:55

标签: activerecord set ruby-on-rails-5.1

假设有一个模型,UsersUsers包含字段admin(仅作为示例)。

查询必须始终返回Users所有admin == false,但只有在被要求时,才能返回Users所有admin == true,但只需一个数据库请求

所以返回子集可能是:

其中Aadmin == false

其中Badmin == true

返回AA ∪ B

1 个答案:

答案 0 :(得分:1)

这样的事情应该有效:

scope :not_admins, -> { where(admin: false) } // this is A
scope :admins, -> { where(admin: true) } // this is B

def self.example(include_admins = false)
  if include_admins
    self.not_admins.or(self.admins) // A U B
  else
    self.not_admins // A
  end
end

然后您只需致电User.example()User.example(true),具体取决于您是否需要AA U B

相关问题