2017-12-05 12 views
0

has_manyリレーションを持つモデルのアクティブモデルJSONシリアライザをJSONレスポンスに含めることができます。RailsアクティブモデルJsonシリアライザ:has_oneとしてhas_oneというhas_manyレコードを返す

私の代わりにhas_manyレコードのhas_oneとして含まれるレコードを希望 - 最初のレコードだけを含めるには:

ここ
class PersonSerializer < ActiveModel::Serializer 
    attributes :name, :symbol 
    has_many :stats 
    has_many :body_parts 
end 

body_partshas one :body_partとして返されるべきです。それをする最善の方法は何ですか?それは最初体の一部であることを正確に何を意味していますが、特定する必要があり、両方のケースで

class Person 
    def body_part 
    body_parts.first 
    end 

    # or 

    has_one :body_part, -> { order(id: :asc) } 
end 

class PersonSerializer < ActiveModel::Serializer 
    attributes :name, :symbol 
    has_many :stats 
    has_one :body_part 
end 

答えて

0

はそれはのように単純ではありません。

1

最初のbody_partのみを返し、それをシリアライザの応答でのみ行う場合は、PersonSerializerのメソッドとして定義することをお勧めします。

class PersonSerializer < ActiveModel::Serializer 
    attributes :name, :symbol 
    has_one :body_part, serializer: BodyPartSerializer 
    ... 
    def body_part 
    self.object.body_parts.first 
    end 
end 

BodyPartモデル用の別のシリアライザがあることを前提としています。

関連する問題