【问题标题】:Active Model Serializer 0.10 filter on query paramsActive Model Serializer 0.10 过滤查询参数
【发布时间】:2016-04-25 01:27:42
【问题描述】:

查看其他问题,似乎 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&amp;, wednesday=true) 等作为过滤器来添加。

【问题讨论】:

  • 老是什么意思? 0.10版本支持0.8版本的方法集。

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


【解决方案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

注意:任何传递给 render 的选项,如果不是为适配器保留的,都应该可用

【讨论】:

  • 好答案。也可以使用序列化范围
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-20
  • 1970-01-01
  • 2017-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多