我对 Ruby 和 Rails 框架还很陌生。我的背景主要是 Java。无论如何,我面临着一个奇怪的情况。我的一个模型中有一个返回关联模型的方法。关联如下。A has_many Bs, B属于A(即一对多)
class ModelA < ActiveRecord::Base
has_many :model_bs
def get_bs
ModelB.where(:a_id => id)
end
end
class ModelB < ActiveRecord::Base
belongs_to :model_a
end
在我看来,如果我尝试访问结果集中的记录(模型),我可以毫无问题地调用它的属性(图 A)。生活很好。
图一:
<% bs = a.get_bs %>
<% bs.each do |b| %>
<%= b.some_prop %>
<% end %>
但是,如果我尝试按索引访问模型,我会收到一条错误消息,指出我无法在 nil 对象上调用方法(图 B 和 C)。
图 B:
<% bs = a.get_bs %>
<%= bs[0].some_prop) %>
甚至..
图C:
<% bs = a.get_bs %>
<%= bs[0].first %>
不工作。我知道这是用户错误(我)。我查看了从集合中访问对象的文档(在这种情况下,我相信它是一个 Ruby 数组)。我也在 StackOverflow 上搜索过这里。我仍然摸不着头脑。我还没有完全找到类似的线程。