class Something
belongs_to :User
end
class User
has_many :something
end
我可以调用Something.all并获取对象数组
[#<Something:0x0000558f81437158
id: "c2c0506e-57db-4d39-8f5b-20fde15aa1a4",
user_id:"XXX-XXX">]
当我使用Something.includes(:user)
时,我得到完全相同的结果。
我的印象是我在某个对象中包含了一些用户对象。
当我使用例如Something.all.as_json(includes: :user)
时,我得到一个合并的json哈希。问题是我不想要合并的json哈希。我的模型中某处有什么问题或.includes
如何工作?
Usecase将是我的索引操作,它使用json自动响应,我只需要构建正确的对象哈希,而无需在整个地方编写as_json。
任何?
答案 0 :(得分:0)
将以下gem添加到您的Gemfile
gem 'active_model_serializers'
然后使用bundle
安装它bundle install
您可以按如下方式生成序列化程序
rails g serializer something
rails g serializer user
它将在
中创建Serializer类文件# app/serializers/something_serializer.rb
class SomethingSerializer < ActiveModel::Serializer
attributes :id,
has_many :users
end
# app/serializers/user_serializer.rb
class UserSerializer < ActiveModel::Serializer
attributes :id, :name
end
在控制器中
def index
@something = Something.includes(:users).all
render json: @something
end