0

次の Active Model Serializer があり、インスタンスからメモの配列を返す notes というメソッドに特定のシリアライザーを使用したいと考えています。

私はこれと他のいくつかのバリエーションを試しました:

class MenuNotesSerializer < ActiveModel::Serializer
  attributes :id, :name, :notes(NoteSerializer)

と:

class MenuNotesSerializer < ActiveModel::Serializer
  attributes :id, :name, :tns

  def tns
    object.notes  #  works , serializer: NoteSerializer
  end

  def tns
    object.notes, serializer: NoteSerializer #doesn't work
  end

基本的に、メニューの notes メソッドによって返される配列に使用したい NoteSerializer がありますが、これを行う方法がわかりません。何か案は?

thx事前に

4

2 に答える 2

3

基本的な配列 (リレーションではない、または非常に特定のスコープが必要な場合) の別のソリューションを次に示します。

attributes :tns

def tns
  object.notes.map do|note|
    NoteSerializer.new(note, scope: scope, root: false)
  end
end

あるいは:

def tns
  ActiveModel::ArraySerializer.new(object.notes, each_serializer: NoteSerializer)
end
于 2014-04-02T20:45:49.730 に答える
1
class MenuNotesSerializer < ActiveModel::Serializer
  attributes :id, :name
  has_many :notes, serializer: NoteSerializer
end
于 2014-04-02T20:43:42.797 に答える