0
私はRails 5 APIのみのアプリケーションに取り組んでいます。Rails用のアクティブモデルシリアライザを介してネストされたオブジェクトの親データをレンダリングするには?
は、これが私のモデルシリアライザある
class MovieSerializer < ActiveModel::Serializer
attributes :id ,:name,:release_year,:story,:in_theater,:poster,:score,:user_count
belongs_to :age_rating
belongs_to :company
has_many :categories
has_many :movie_celebrities
end
class MovieCelebritySerializer < ActiveModel::Serializer
attributes :id,:vacancy,:title
belongs_to :celebrity
end
class CelebritySerializer < ActiveModel::Serializer
attributes :id, :first_name, :last_name
has_many :movie_celebrities
end
私のコントローラ
class Api::V1::MoviesController < ApplicationController
# GET /v1/movies/:id
def show
movie = Movie.find_by(id: params[:id])
render json: movie
end
end
だから、これは私が各内部有名人のデータを必要としている私は問題では
{
"id": 1,
"name": "0 The Doors of Perception",
"release_year": 2007,
"story": "Non doloribus qui et eum impedit. Rerum mollitia debitis sit nesciunt. Vero autem quae sit aliquid rerum ex fugit. Eligendi assumenda et eos. Blanditiis hic ut. Commodi quo sunt voluptatem quasi.",
"in_theater": false,
"poster": "'http://cdn.mos.cms.futurecdn.net/15399e7a7b11a8c2ef28511107c90c6f.jpg',",
"score": 0,
"user_count": 6950,
"age_rating": {
"id": 2,
"name": "PG"
},
"company": {
"id": 5,
"name": "Gislason, Jacobs and Graham"
},
"categories": [
{
"id": 4,
"name": "Biography"
},
{
"id": 16,
"name": "Mystery"
}
],
"movie_celebrities": [
{
"id": 1,
"vacancy": "director",
"title": ""
},
{
"id": 2,
"vacancy": "cast",
"title": "Pro x"
},
{
"id": 3,
"vacancy": "cast",
"title": "Magneto"
}
]
}
を得たものですこのようなオブジェクトmovie_celebrities
。
[
{
"id": 1,
"vacancy": "director",
"title": "",
"celebrity": {
"id": 17,
"first_name": "Jannie",
"last_name": "Stiedemann"
}
},
{
"id": 2,
"vacancy": "cast",
"title": "Pro x",
"celebrity": {
"id": 56,
"first_name": "Diego",
"last_name": "Hickle"
}
},
{
"id": 3,
"vacancy": "cast",
"title": "Magneto",
"celebrity": {
"id": 23,
"first_name": "Myrtie",
"last_name": "Lebsack"
}
}
]
どのようにしてこの状況を有効にすることができますか? ありがとう!
'render json:@movie、includes:{movie_celebrities:[:celebrity]}'を試してください。シリアライザafaikでネストされた関連付けを指定することはできませんが、機能リクエストがあります。 – max
第1に、どのバージョンの "シリアライザ"を使用しますか?また、 'MovieCelebritySerializer'から 'has_one:celebrity or has_many:celebrities'の名前を変更し、' CelebritySerializer 'から' has_many:movie_celebrities'を削除してみてください。今 – 7urkm3n