活动模型序列化程序未显示关联模型的所有属性

时间:2017-05-18 22:17:17

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

我有一个物品。它属于一个用户。我在app / serializers中有一个ItemSerializer和一个UserSerializer:

ClassPathXmlApplicationContext

这些关系模拟app / models中的关系

当我在控制器中将项目的ActiverRecord :: Relation作为json返回时:

class ItemSerializer < ActiveModel::Serializer
  attributes :id, :photo

  belongs_to :user
end

class UserSerializer < ActiveModel::Serializer
  attributes :id, :email, :authentication_token
end

它应该返回用户属性,包括email和authentication_token。但它只返回用户ID:

def index
    respond_to do |format|
      @items = Item.where(id: params[:item_ids)
      format.html
      format.json { render json: @items, status: 200}
    end
  end

我做错了什么?

2 个答案:

答案 0 :(得分:1)

尝试

render json: @items, include: "**", status: 200

在你的控制器中。 AMS在返回相关对象属性时可能很挑剔,因此有时你需要明确它。

答案 1 :(得分:1)

我想出了这个问题。我使用的是active_model_serializers版本0.10.0。在config/environments/initialzers/active_model_serializer.rb中,我有以下配置:

ActiveModel::Serializer.config.adapter = :json_api

当我将其更改为:

ActiveModel::Serializer.config.adapter = :json

它给了我关联的属性,如控制台所示:

ActiveModelSerializers::SerializableResource.new( Item.where(id: params[:item_ids), adapter: :json).to_json