рельсы named_scope как расширение AR :: Base - PullRequest
2 голосов
/ 18 мая 2010
class SomeModel < ActiveRecord::Base
  named_scope :recent, lambda { { :conditions => ['created_at > ?', 1.week.ago] } }
end

Я хочу расширить класс AR :: Base, чтобы иметь этот named_scope для всех моделей, как я могу это сделать?

1 Ответ

3 голосов
/ 18 мая 2010

Создайте новый файл инициализатора в config / initializers , а затем заново откройте класс Base ActiveRecord, чтобы добавить именованную область:

module ActiveRecord
  class Base
    named_scope :recent, lambda {
      { :conditions => ['created_at > ?', 1.week.ago] }
    } 
  end
end

& mdash; Конечно, вы получите довольно уродливую ошибку, если попытаетесь использовать эту именованную область в модели, у которой нет атрибута created_at ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...