You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails 5 API:如何通过active_model_serializers包含多层关联模型到JSON响应

解决Active Model Serializers嵌套关联序列化的问题

你可以通过点符号或者数组格式来指定嵌套的关联关系,把Shop关联的Address也包含到响应里,具体操作如下:

方法1:使用点符号指定嵌套关联

直接在include参数里用.连接嵌套的关联名称,就能一次性加载多层关联:

# UsersController中的代码
render json: @current_user, status: :ok, include: 'shop.address'

方法2:使用数组格式(更清晰,适合多关联场景)

如果需要同时包含多个关联或者层级更复杂,数组格式的可读性更强:

render json: @current_user, status: :ok, include: ['shop', 'shop.address']

关键前提:确保序列化器配置正确

别忘了检查对应的序列化器是否声明了关联关系,不然即使指定了include也不会生效:

  1. 在UserSerializer中,你应该已经有了belongs_to :shop的配置(因为之前单关联是正常的);
  2. 必须在ShopSerializer中添加has_one :address,告诉序列化器要处理这个关联:
# app/serializers/shop_serializer.rb
class ShopSerializer < ActiveModel::Serializer
  attributes :id, :name # 替换为你的Shop模型实际字段
  has_one :address # 新增这行,声明与Address的关联
end

这样配置后,返回的JSON响应就会同时包含User、关联的Shop以及Shop关联的Address数据了。

内容的提问来源于stack exchange,提问作者belgoros

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:42:04