我有一个物品。它属于一个用户。我在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
我做错了什么?
答案 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