1
コントローラからシリアライザへのデータではなく、シリアライザから別のものにデータを送ることができるかどうかを知りたいと思います。ここに私がやっていることがあります:Ruby on Rails 5 - 2つのシリアライザ間でデータを渡す
私はコントローラからシリアライザにデータを送ることが可能であることを知っています。しかしシリアライザから別のシリアライザにデータを送ることは可能ですか?
コントローラからシリアライザへのデータではなく、シリアライザから別のものにデータを送ることができるかどうかを知りたいと思います。ここに私がやっていることがあります:Ruby on Rails 5 - 2つのシリアライザ間でデータを渡す
私はコントローラからシリアライザにデータを送ることが可能であることを知っています。しかしシリアライザから別のシリアライザにデータを送ることは可能ですか?
はい。 AMS 0.10.xを使用して、あなたはこのような方法であなたの例を変更することができます:
serializer_1.rb
class Serializer1 < ActiveModel::Serializer
attributes :id, :past_teachings
def past_teachings
ActiveModelSerializers::SerializableResource.new(PastTeaching.all, each_serializer: TeachingSerializer)
end
end
teaching_serializer.rb:
class TeachingSerializer < ActiveModel::Serializer
attributes :id, :name
end
を使用すると、現在のオブジェクトがシリアライズされているアクセスしたい場合「オブジェクト」を参照することができます。オブジェクト関数はobject.functionとしてアクセスでき、その属性はobject ['attribute']としてアクセスできます。
(現実にはおそらく代わりに、AMSのhas_manyの関係を使用しますが)ので、技術的に、あなたはこのような何かを行うことができます:
class Serializer1 < ActiveModel::Serializer
attributes :id, :past_teachings
def past_teachings
ActiveModelSerializers::SerializableResource.new(object.past_teachings.where(...), each_serializer: TeachingSerializer)
end
end
どのようなデータオマールの種類は?何らかのオプション/パラメータのようなもの?またはシリアル化されたデータですか?あなたが提供した例でやっているコレクションだけ? – lavilet
@lavilet:アクティブなレコードオブジェクトIDを送信したい –