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

标签 json ruby

我找不到在我的 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/

相关文章:

java - gson中如何使用缩进生成json文件

java - 将维基百科页面的内容获取到 Android

ruby-on-rails - Mailgun 帐户注册后很快就被禁用

ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言)

ruby-on-rails - Ruby:如何将对象更改为可读的内容

python - 有没有办法使用 python 列出 json 中未知数量的元素?

java - 从 HTML 中获取数据并将其转换为 JSON

java - 无法解析 JSONParser

将 Java 与 Ruby 结合使用时出现 java.lang.NullPointerException

ruby-on-rails - 从 Ruby 1.9.x、Rails 3 和/或 Merb 开始