2015-02-16 1 views
0

Я использовал драпировку с некоторым успехом. Но в настоящее время я застрял.Draper Gem, что приводит к ошибке метода Undefined

У меня есть две модели:

# 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: бары

Любые идеи, что я делаю неправильно?

+1

Можете ли вы показать нам код декораторов и полный стек ошибок, пожалуйста? – dgilperez

+0

Разве ваша вторая модель не должна быть 'class Bar pdoherty926

+0

@ pdoherty926. Ты прав. Я обновил выше – Herm

ответ

0

Благодарим вас за комментарии. Кажется, я нашел решение.

Метод FooDecorates должен указывать на единственном экземпляре Bar:

decorates_association :bar 

И не:

decorates_association :bars