ruby-on-rails - 在深度嵌套对象模型中处理 nils 的技术

标签 ruby-on-rails ruby

我正在开发一个具有深层嵌套关联的遗留 Rails 应用程序。我有一些要求冒泡并显示一些深层嵌套的属性。

目前我正在做这样的事情来显示结果(使用 ActiveRecord 关联和数组)

model_a
  .collection_of_model_b
  .map(&:collection_model_c)
  .flatten
  .map(&:collection_model_d)
  .display_field

这种方法适用于测试数据,但一旦我开始使用真实数据,我就开始注意到到处都是 NilClass 错误。

请提供我可用于获取此数据的技术、语法和模式方面的指导。

一些我想过但还没有追求的方法: 1) 每次我下降一个级别时,将调用分成不同的行来检查 nils。 2) 使用直接 sql ( find_by_sql )。

最佳答案

使用Array#compact :

>> [1, 2, nil, 3].compact
=> [1, 2, 3]

>> [[1, 2], [3, nil], [4]].map(&:compact)
=> [[1, 2], [3], [4]]

关于ruby-on-rails - 在深度嵌套对象模型中处理 nils 的技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7051763/

相关文章:

java - Rails 请求.xhr?不管用

ruby-on-rails - Rails 断言的正则表达式以查看路径是否匹配

ruby-on-rails - RSpec 3 : Simple validates_uniqueness_of Failure

ruby - 使用 Ruby 符号

ruby - 保存并重新使用 block 以进行方法调用

ruby-on-rails - 如何在 ruby​​ 中安装 gem 期间从 rdoc 和 ri 生成中排除某些类?

ruby-on-rails - 如何在我的 Gemfile 中启用详细标志

ruby-on-rails - 按钮标签中嵌入的 HTML 标签 Rails Button_to

ruby-on-rails - gem 服务器: How to update gems with missing rdoc?

ruby - 为什么在尝试使用 RubyMine 进行调试时会出现错误?