active model serializer を使用しています。 has_manyアクティビティがあるモデルイベントがあります。
最初のn個のアクティビティでイベントを返します。 params 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
@options
ハッシュは0.9
で削除されました。同等のメソッドが 最近追加された -
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
アクティブモデルシリアライザー の0.10
の時点で、 here のようにinstance_options
変数を介して任意のオプションを渡すことができます。
# posts_controller.rb
class PostsController < ApplicationController
def dashboard
render json: @post, user_id: 12
end
end
# post_serializer.rb
class PostSerializer < ActiveModel::Serializer
attributes :id, :title, :body
def comments_by_me
Comments.where(user_id: instance_options[:user_id], post_id: object.id)
end
end
serialization_options Active Model Serialization 0.9.3でうまく機能します。
Renderコマンドと一緒に渡されたオプションは、シリアライザーでそれらのキーを使用してアクセスできます->serialization_options [:key]