【发布时间】:2011-08-13 16:28:56
【问题描述】:
我正在开发一个具有深度嵌套关联的旧版 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 )。
【问题讨论】:
-
.reject可能会过滤掉 nil 值? -
哪一步引入了 nil 对象?
-
根据我选择的 model_a 更改步骤。有时它是一个model_b 对象,它在数组中出现为零,其他时候它是model_c 或model_d。如下所述,在每种情况下,我都会在调用 map 之前尝试运行 compact 以防止出现 nil。
标签: ruby-on-rails ruby