0

我使用 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

任何想法我做错了什么?

4

1 回答 1

0

谢谢你的意见。我似乎找到了解决办法。

FooDecorates 方法应该指向 Bar 的单个实例:

 decorates_association :bar

并不是:

decorates_association :bars
于 2015-02-16T20:01:43.530 回答