Использование Rails 3.2/Ruby 1.9, например, у меня есть следующие классы:ActiveRecord связь с областью
class Foo
has_many :bars
end
class Bar
scope :active, where(:active=>true)
# also tried
# scope :active, lambda{where(:active=>true)}
# scope :active, -> {where(:active=>true)}
end
Теперь, если у меня есть экземпляр Foo (е), и я f.bars
, я получаю экземпляр ActiveRecord :: Отношение, как ожидалось. По какой-то причине, хотя, когда я делаю f.bars.active
, я получаю неопределенный метод active
для объекта отношения (я куплю это, поскольку область действия находится на классе Bar
). Однако я могу сделать f.bars.where(:active=>true)
. Я думаю, мои вопросы:
- Что происходит под капотом здесь?
- Как я могу использовать активную область для достижения желаемого результата?
Приведенный выше пример работает. Моя ситуация была в моем классе, в ней была ошибка (без малейшего сбоя), обнаруженная только тогда, когда я сделал Bar.active. – psulightning