我使用 draper 取得了一些成功。但目前我被困住了。
我有两个模型:
# Foo.rb
class Foo < ActiveRecord::Base
has_many :bars
# Bar.rb
class Bar < ActiveRecord::Base
belongs_to :foo
def self.number_banned
where(:status => "banned").count
end
如果类正常加载,它会按预期工作:
f = Foo.find(1)
f.bars.number_banned # ex. 3
如果我使用 Draper 来装饰对象,它会返回一个未定义的“number_banned”方法:
f = Foo.find(1).decorate
f.bars.number_banned # Undefined method 'number_banned'
要注意:
- 两个装饰器都包含 delegate_all 选项
- FooDecorator decorates_association :bars
任何想法我做错了什么?