Active Model Serializer 0.10过滤查询参数

时间:2016-04-25 01:27:43

标签: ruby-on-rails active-model-serializers rails-api

通过查看其他问题,似乎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 :(得分: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

注意:传递给渲染的任何未为适配器保留的选项都应该可用