0

我有以下活动模型序列化程序,并希望将特定的序列化程序用于名为 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

基本上我有一个 NoteSerializer,我想将它用于菜单上的 notes 方法返回的数组,但不知道如何完成这项工作。有任何想法吗?

提前谢谢

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 回答