我有一个具有以下default_scope的用户模型:
default_scope where(account_id: Account.current_account.id)
如果我致电User.all
,我总会根据当前帐户获得结果。
在某些情况下,出于管理目的,我想绕过该范围并查看系统中的所有用户,无论帐户如何。
有办法做到这一点吗?
答案 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
当你组成多个范围时,这很重要。
当然,首先应用这种默认范围是一种反模式。