ActiveModel Serializers两个级别的属性

时间:2017-08-02 19:05:54

标签: ruby-on-rails active-model-serializers

在我的rails项目中,我有一个用户序列化程序:

class UserSerializer < ActiveModel::Serializer
    attributes ...
    has_one :project
    has_many :sessions
end

和一个会话:

class SessionSerializer < ActiveModel::Serializer
    attributes ...
    belongs_to :user
end

所以如果我从任何控制器返回会话:

render json: session

我得到类似的东西:

{ "session": {
    "user: { ... }
    ...
}

但是用户不包含该项目,因为我觉得它太深了,所以我该如何包含它呢?

1 个答案:

答案 0 :(得分:2)

您可以配置default_includes AMS以进行更深层次的嵌套

# config/initializers/active_model_serializer.rb
ActiveModel::Serializer.config.default_includes = '**'

或者您可以尝试向include方法提供render选项:

render json: session, include: ["user.project"]