7

これに関する多くの投稿を見てきましたが、私の問題を解決するものはないようです。私は次のdefault_scopeようなモデルを持っています:

default_scope where(:is_active => true).order('LOWER(table.name)');

inactive他の (通常の) スコープがあり、 を使用してスコープを作成したいと考えていますunscoped。スコープとして定義したいのですが、クラスメソッドとして定義されている場合にのみ機能します:

# works
def self.inactive
  unscoped { where(:is_active => false) }
end

# none of these work
scope :inactive, unscoped { where(:is_active => false) }
scope :inactive, with_exclusive_scope { where(:is_active => true) }
scope :inactive, unscoped.where(:is_active => false)
scope :inactive, lambda { unscoped { where(:is_active => false) } }
scope :inactive, unscoped { lambda { where(:is_active => false) } }
unscoped do
  scope :inactive, where(:is_active => false)
end

私が見逃した方法はありますか、それともクラスメソッドを使用してこのスコープを定義する必要がありますか?

4

2 に答える 2

0

これを試して

scope :inactive, lambda { unscoped.where(:is_active => false) }
于 2012-01-04T22:09:47.987 に答える