Draper Gem导致未定义的方法错误

时间:2015-02-16 18:12:36

标签: ruby-on-rails ruby ruby-on-rails-4 draper

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

任何想法我做错了什么?

1 个答案:

答案 0 :(得分:0)

感谢您的评论。我似乎找到了解决方案。

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

 decorates_association :bar

而不是:

decorates_association :bars