我发生了一些非常奇怪的事情。在一个视图中,我正在填充这样的集合:
<% 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。为什么会发生异常?