如何通过Rails的Active模型序列化器呈现嵌套对象的父数据?

我正在研究Rails 5 api only app。

所以这是我的模型序列化器

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://sofzh.miximages.com/ruby-on-rails/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" } } ] 

那么我怎样才能使这种情况有效呢? 谢谢!

您应该将ActiveModelSerializers.config.default_includes = '**'添加到config/initializers/active_model_serializers.rb 。 请参阅此处的文档 或者设置为正确渲染,以防您更喜欢粒度控制。