gpt4 book ai didi

json - 用于更新 JSON 中的模型值的 Ruby 代码

转载 作者:数据小太阳 更新时间:2023-10-29 07:58:39 31 4
gpt4 key购买 nike

我找不到在我的 ruby​​ 代码中合并这两行的方法:

def as_json(options={})
super(options).merge ({ :id => self.id.upcase }) # upcase id
super(options).reject { |k, v| v.nil? } # reject nil values
end

如何在super中管理mergereject

编辑:super(options) 返回的示例:

{"id"=>"6ea8db7f-18a8-422d-9510-5b615883ed7c", "user_id"=>1, "contact_id"=>nil, "producer_id"=>nil }

问题是当 contact_idproducer_idnil 时。

super(options).reject { |_k, v| v.nil? }.merge(id: id.upcase, contact_id: contact_id.upcase, producer_id: producer_id.upcase) 

编辑 2:这是可行的,但非常丑陋

super(options).merge(id: id.upcase, contact_id: contact_id ? contact_id.upcase : nil, producer_id: producer_id ? producer_id.upcase : nil).reject { |_k, v| v.nil? } 

最佳答案

您可以根据需要链接任意多个方法:

def as_json(options={})
super(options).reject { |k, v| v.nil? }.merge ({ :id => self.id.upcase })
end

这是您的代码的更传统的版本:

def as_json(options = {})
super(options).reject { |_k, v| v.nil? }.merge(id: id.upcase)
end
  • 在设置参数的默认值时使用空格
  • _k 表示 block 中没有使用k
  • merge
  • 中不需要 {}
  • 不需要self

关于json - 用于更新 JSON 中的模型值的 Ruby 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43582486/

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