如何绕过default_scope?

时间:2012-04-01 22:04:55

标签: ruby-on-rails

我有一个具有以下default_scope的用户模型:

default_scope where(account_id: Account.current_account.id)

如果我致电User.all,我总会根据当前帐户获得结果。

在某些情况下,出于管理目的,我想绕过该范围并查看系统中的所有用户,无论帐户如何。

有办法做到这一点吗?

2 个答案:

答案 0 :(得分:22)

是的,unscoped

User.unscoped.all

答案 1 :(得分:1)

现在,正确的方法是使用unscope,这只会删除范围的显式部分。 E.g:

class User < ActiveRecord::Base
  default_scope where(account_id: Account.current_account.id)
  scope :all_accounts, -> { unscope(:account_id) }
end

当你组成多个范围时,这很重要。

当然,首先应用这种默认范围是一种反模式。