2015-10-18 1 views
0

Я пытаюсь обновить до active_model_serializers 0.10.x gem.не может добавить новый ключ в хэш во время итерации для active_model_serializers 0.10.x

Но я получаю сообщение об ошибке:

can't add a new key into hash during iteration 

Ниже приведены соответствующие части кода:

respond_to do |format| 
    format.html # show.html.erb 
    format.json { render json: @shows, each_serializer: ShowSerializer, meta: @shows.total_count, meta_key: 'count' } 
end  

Serializer:

class ShowSerializer < ActiveModel::Serializer 

    def attributes(*args) 
    data = super 

    performances = object.performances.order("billing_index ASC") 
    display_limit = 7 
    data[:performances] = ActiveModel::Serializer::ArraySerializer.new(performances.limit(display_limit), each_serializer: PerformanceSerializer, scope: self.scope) 

    data 
    end 
end 

Я не использую

has_many :performances 

, потому что я хочу ограничить характеристики до первых 7.

ответ

0

Вы не должны переопределять метод attributes, если не знаете, что делаете.

Вот, что вы можете сделать, это просто переопределить связь как таковую:

class ShowSerializer < ActiveModel::Serializer 
    has_many :performances 

    def performances 
    object.performances.order('billing_index ASC').limit(7) 
    end 
end