如何将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