Rails 3.1.3 с незаданной областью действия - PullRequest
7 голосов
/ 05 января 2012

Я видел много сообщений по этому поводу, но, похоже, ни одна из них не решила мою проблему.У меня есть 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

Есть ли способ, который я пропустил, или мне нужно использовать метод класса, чтобы определить этоОбъем?

Ответы [ 2 ]

6 голосов
/ 06 января 2012

Кажется, нет способа сделать это. Я открыл вопрос о репо рельсов на github ...

0 голосов
/ 05 января 2012

Попробуйте это

scope :inactive, lambda { unscoped.where(:is_active => false) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...