2016-04-25 12 views
0

Просмотрев другие вопросы, кажется, что 0.10 больше не поддерживает старые методы фильтрации по параметрам запроса.Active Model Serializer 0.10 фильтр по параметрам запроса

class CategorySerializer < ActiveModel::Serializer 
    attributes :id, :name, :deals_count 

    def deals_count 
    byebug 
    Deal.includes(:categories).where(categories: { id: @object.id }).count 
    end 

end 

На модели сделки, у меня есть булевы на каждый день недели (понедельник, вторник, среда ...)

Я хочу, чтобы иметь возможность передавать в (tuesday=true&, wednesday=true) и т.д., как фильтры, чтобы добавить для это.

+1

, что вы имеете в виду старый? Версия 0,10 поддерживает 0,8 версию набора методов. –

ответ

1

Вы должны использовать instance_options.

# controller 
render json: @category, days: [1, 2, 4, 6, 7] 

И ваш сериализатор должен быть что-то вроде:

class CategorySerializer < ActiveModel::Serializer 
    attributes :id, :name, :deals_count 

    def deals_count 
    Deal.where(days: instance_options[:days]) 
     .includes(:categories).where(categories: { id: @object.id }).count 
    end 
end 

Примечания: любых вариантов передаваемых для визуализации, которые не зарезервированы для адаптера должен быть доступен

+0

Хороший ответ. Можно также использовать область сериализации – BF4