Ich verwende den aktiven Modell-Serializer . Ich habe ein Modellereignis, das viele Aktivitäten hat.
Ich möchte die Veranstaltung mit den ersten n Aktivitäten zurückgeben. Ich denke, ich sollte die Parameter n an den Ereignisserialisierer übergeben.
ruby-on-rails
active-model-serializers
Bruce Xinda Lin
quelle
quelle
we recommend that any new projects you start use the latest 0.8.x version of this gem. This version is the most widely used, and will most closely resemble the forthcoming release.
@options
schien nicht für mich zu funktionieren, es stellte sich heraus, dass der Hash@instance_options
stattdessen geändert wurde . Das hat es für mich getan.In der Version müssen
~> 0.10.0
Sie verwenden@instance_options
. Verwenden Sie das @ Jon Gold-Beispiel von oben:# 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
quelle
Der
@options
Hash wurde entfernt0.9
; sieht aus wie eine äquivalente Methode wurde kürzlich hinzugefügt -def action render json: @model, option_name: value end class ModelSerializer::ActiveModel::Serializer def some_method puts serialization_options[:option_name] end end
quelle
serialization_options
sollte auf 0.9 funktionieren, aber es scheint, als würde man 0.8 verwenden und@options
ist der einzige Weg, der im Moment funktioniert.Mit 0.9.3 können Sie #serialization_options wie folgt verwenden ...
# 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
quelle
Ab
0.10
dem aktiven Modell Serializer können Sie beliebige Optionen über den Passinstance_options
Variable wie gesehen hier .# 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
quelle
serialization_options funktioniert gut mit Active Model Serialization 0.9.3.
Auf die mit dem Befehl render übergebenen Optionen kann im Serializer mit ihren Schlüsseln zugegriffen werden -> serialization_options [: key]
quelle
Ein einfacher Weg ist, einfach die Aktivitätsmethode im Ereignisserialisierer hinzuzufügen und n Aktivitäten zurückzugeben. Das ist es.
class EventSerializer < ActiveModel::Serializer has_many :activities def activities object.activities[0..9] # Select whatever you want end end
quelle