J'utilise sérialiseur de modèle actif . J'ai un événement modèle qui comporte de nombreuses activités.
Je veux rendre l'événement avec les n premières activités. Je pense que je devrais passer les paramètres n au sérialiseur d’événements.
Les options passées sont disponibles via le @options
hash. Donc si vous le faites:
respond_with @event, activity_count: 5
Vous pouvez utiliser @options[:activity_count]
dans le sérialiseur.
En version ~> 0.10.0
vous devez utiliser @instance_options
. En utilisant l'exemple de @Jon Gold depuis le haut
# 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
Le @options
Le hachage a été supprimé dans 0.9
; ressemble à une méthode équivalente était récemment ajouté -
def action
render json: @model, option_name: value
end
class ModelSerializer::ActiveModel::Serializer
def some_method
puts serialization_options[:option_name]
end
end
Avec 0.9.3, vous pouvez utiliser #serialization_options comme suit ...
# 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
À partir de 0.10
de sérialiseur de modèle actif vous pouvez passer des options arbitraires via le instance_options
variable telle que vue ici .
# 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 fonctionne bien avec la sérialisation de modèle actif 0.9.3.
Les options passées avec la commande de rendu sont accessibles dans le sérialiseur à l'aide de leurs clés -> serialization_options [: key]