次の方法で関連付けられた 3 つのモデル、遺伝子型、Gmarkers、および Gsamples があります。
class Genotype < ActiveRecord::Base
attr_accessible :allele1, :allele2, :run_date
belongs_to :gmarkers
belongs_to :gsamples
end
class Gmarker < ActiveRecord::Base
attr_accessible :marker
has_many :genotypes, :dependent => :delete_all
end
class Gsample < ActiveRecord::Base
attr_accessible :box, :labid, :subjectid, :well
belongs_to :gupload
has_many :genotypes, :dependent => :delete_all
end
Gentypes のリスト (index.html.erb 内) を表示すると、関連データが次のように表示されます。
<% @genotypes.each do |f| %>
<tr>
<td><%= Gmarker.find(f.gmarkers_id).marker %></td>
<td><%= Gsample.find(f.gsamples_id).labid %></td>
<td><%= f.allele1 %></td>
<td><%= f.allele2 %></td>
<td><%= f.run_date %></td>
<td><%= link_to 'Show', f %></td>
<td><%= link_to 'Edit', edit_genotype_path(f) %></td>
<td><%= link_to 'Destroy', f, confirm: 'Are you sure?', method: :delete %></td>
</tr>
<% end %>
ただし、ページの読み込みに時間がかかるため、ループごとに 2 つのルックアップを行わずに関連データを表示する簡単な方法があるかどうか疑問に思っています。次のような組み込みの参照 Rails スタイルを使用して、関連するデータを表示することができませんでした。
f.GMarker.first.marker
しかし、コンソールでそれを試みるたびに、次のようなエラーが大量に発生します
NameError: uninitialized constant Genotype::Gmarkers
モデル間に一対多の関係があるため、コンソールがGmarkerについて知らない理由がわかりません....
どんな助けでも大歓迎です!
--リック