gpt4 book ai didi

ruby-on-rails - 为什么 as_json 在 has_one 关联中不返回空对象?

转载 作者:行者123 更新时间:2023-12-04 15:39:35 24 4
gpt4 key购买 nike

我有 useraddress。一个用户有一个地址。所以我使用应用以下关联。

class User < ApplicationRecord
has_one :address, dependent: :destroy
end

在 Controller 中:

render json: User.find(1).as_json(include: :address)

问题是:

它返回一个像这样的 JSON 对象

{id: 1, name: "abc", address: {id: 1, user_id: 1}}

如果我有用户 ID 1 的地址。

但我没有任何用户的地址。它返回

{id: 1, name: "abc"}

但我想要这样的回应

{id: 1, name: "abc", address: {}} 

如果用户没有地址。

最佳答案

可能有更简单的方法,但您可以重新定义 address 属性:

class UserSerializer < ActiveModel::Serializer
...
...

def address
super || {}
end
end

当序列化程序检查地址时,如果它存在,它将返回地址,如果它为 nil 或 false,它将返回一个空哈希而不是不出现。

编辑:根据评论,这需要进入 UserSerializer 而不是 User 模型,编辑上面的代码

关于ruby-on-rails - 为什么 as_json 在 has_one 关联中不返回空对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58345565/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com