小编gk0*_*k0r的帖子

优雅的方式来处理"未定义的方法`每个'为nil:NilClass"在Ruby中可选的关联?

我有一个场景,我有可选的关联.有时协会在那里,有时则不是.

当我尝试在屏幕上显示数据时遇到问题(想想一个简单的索引操作).

请考虑以下应用程序设置:

  • 项目有很多可交付成果
  • 项目有许多部署记录(此模型的两个属性是'名称'和'描述')

我有兴趣从Deliverables Index Action中提取部署记录关联.

我让它使用以下代码,但我发现它有点难看:

@array = deliverable.try(:project).try(:deployment_record)
if @array
   @array.each do |r|
   [r.name, r.description].join(' - ')
end
Run Code Online (Sandbox Code Playgroud)

什么是更优雅的方式来重写这个?我试过了

deliverable.try(:project).try(:deployment_record).each do |r|
   [r.name, r.description].join(' - ')
end
Run Code Online (Sandbox Code Playgroud)

但我继续遇到未定义的方法`每个'为nil:NilClass错误.我似乎无法找到一种方法来优雅地绕过Nil对象上的.each.我有一种感觉,不知怎的,我应该能够更优雅地做到这一点,但我不能把手指放在上面.

我通过代码库重复使用了这个剪切,所以如果我只是将它复制并粘贴到任何地方,那么额外的两行真的会让我感到害怕.我很高兴关联检索失败,我只是想优雅地失败而没有任何错误或消息.有任何想法吗?

ruby try-catch associations optional

3
推荐指数
1
解决办法
6885
查看次数

标签 统计

associations ×1

optional ×1

ruby ×1

try-catch ×1