71

アクティブ モデルシリアライザーを使用しています。has_many アクティビティのモデル イベントがあります。

最初の n 個のアクティビティでイベントを返したいです。params n をイベントシリアライザーに渡す必要があると思います。

4

7 に答える 7

50

渡されたオプションは、@optionsハッシュを通じて利用できます。したがって、次のようにします。

respond_with @event, activity_count: 5

シリアライザー内で使用できます@options[:activity_count]

于 2014-04-28T17:44:18.043 に答える
45

@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
于 2014-11-06T13:17:44.060 に答える
14

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
于 2015-08-13T13:52:56.993 に答える
8

serialization_optionsは、Active Model Serialization 0.9.3 でうまく機能します。

render コマンドとともに渡されるオプションは、キーを使用してシリアライザーでアクセスできます -> serialization_options[:key]

于 2015-02-25T11:00:38.540 に答える
-3

簡単な方法は、イベント シリアライザーにアクティビティ メソッドを追加し、n 個のアクティビティを返すだけです。それだ。

class EventSerializer < ActiveModel::Serializer

  has_many :activities

  def activities
    object.activities[0..9] # Select whatever you want
  end
end
于 2014-04-28T18:37:07.817 に答える