我发生了一些非常奇怪的事情。 在一个视图中,我正在填充这样的集合:
<% foo_options = Bar.find(f.object.bar_id).supplier_contracts.collect(&:foo).uniq.compact : [] %>
这是ActiveRecord模型的集合。
编辑:这种情况发生在表单中,因此f.object
指的是另一个ActiveRecord模型实例。
如果我尝试在下一行解除引用这样的集合元素:
<%= foo_options.first.inspect %>
检查有效的模型对象。 现在,如果我将其更改为
<%= foo_options.first.id %>
我得到一个例外“为nil调用id,这将错误地为4”。 如果我将其更改为
<%= foo_options.first.try :id %>
一切正常,它会显示对象的ID。 为什么会发生异常?