私はRubyとRailsフレームワークにかなり慣れていません。私のバックグラウンドは主に Java です。とにかく、私は奇妙な状況に直面しています。モデルの 1 つに、関連付けられたモデルを返すメソッドがあります。協会は以下の通りです。A には複数の B があり、B は A に属します (つまり、1 対多)。
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)。人生は素晴らしい。
図 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 も検索しました。今でも頭を悩ませています。似たようなスレッドがなかなか見つかりません。