我发现为了避免Rails错误 undefined method 'name' for nil:NilClass
,我经常需要使用一种结构。
这个结构看起来像这样:
if country.state
country.state.name
end
看起来这是一个典型的反复使用 country.state
的例子,出现在一个简单的代码块中两次。有没有什么方法可以使它更干净?
我发现为了避免Rails错误 undefined method 'name' for nil:NilClass
,我经常需要使用一种结构。
这个结构看起来像这样:
if country.state
country.state.name
end
看起来这是一个典型的反复使用 country.state
的例子,出现在一个简单的代码块中两次。有没有什么方法可以使它更干净?
State.try(:find_by_iso, "AF").try(:country).try(:name)
。 - Reed G. Lawcountry.state.try(:name)
吗? - Mladen Jablanović除了使用稍微更简洁的语法:
country.state.name unless country.state.nil?
我认为根据所提供的信息,没有DRY的方法来完成这个任务。如果你不能确定country.state是nil还是非nil,你可能需要查看设置该值的代码,并确定这是否是正常情况,或者上游验证程序是否应该捕获该问题。
country.state
是空的,因为原始数据中没有这些州的信息。 - Reed G. Law
country.state.name
做什么。你只是想返回它,并在country.state
为nil
时返回nil
吗? - Brian Campbell