如何将parameter passing给ActiveModel序列化程序

我正在使用活动模型序列化程序 。 我有一个模型事件has_many活动。

我想要返回事件的第n个活动。 我想我应该通过参数n的事件串行器。

传入的选项可通过@options散列获得。 所以如果你这样做:

 respond_with @event, activity_count: 5 

您可以在序列化程序中使用@options[:activity_count]

在版本~> 0.10.0您需要使用@instance_options 。 使用上面的@Jon Gold示例:

 # controller def action render json: @model, option_name: value end # serializer class ModelSerializer::ActiveModel::Serializer def some_method puts @instance_options[:option_name] end end 

0.9中删除了@options散列; 看起来像最近增加了一个等效的方法 –

 def action render json: @model, option_name: value end class ModelSerializer::ActiveModel::Serializer def some_method puts serialization_options[:option_name] end end 

使用0.9.3,你可以使用#serialization_options像这样…

 # app/serializers/paginated_form_serializer.rb class PaginatedFormSerializer < ActiveModel::Serializer attributes :rows, :total_count def rows object.map { |o| FormSerializer.new(o) } end def total_count serialization_options[:total_count] end end # app/controllers/api/forms_controller.rb class Api::FormsController < Api::ApiController def index forms = Form.page(params[:page_index]).per(params[:page_size]) render json: forms, serializer: PaginatedFormSerializer, total_count: Form.count, status: :ok end end 

serialization_options适用于主动模型序列化0.9.3。

通过render命令传递的选项可以在序列化程序中使用键 – > serialization_options [:key]

简单的方法就是在事件串行器中添加活动方法并返回n个活动。 这就对了。

 class EventSerializer < ActiveModel::Serializer has_many :activities def activities object.activities[0..9] # Select whatever you want end end 
Interesting Posts