我在show.html.erb中有以下内容:
<% if @doctor.referrals_as_from.count > 0 %>
<% @doctor.referrals_as_from.each do |referral| %>
<%= referral.to_id %>
<% end %>
<% end %>
这很好用,从我的推荐模型中给出一个匹配的ID号列表。
但是,我不想获取一个id号列表,而是通过在引用中使用标识的id来交叉引用Doctors模型中的“full_name”列,基本上是内部联接。这样做最优雅的方式是什么?向控制器添加新方法并进行连接或包含,还是有更简单的方法?
型号:
doctor.rb
class Doctor < ActiveRecord::Base
self.primary_key = "npi"
has_many :referrals_as_from, :class_name => 'Referral', :foreign_key => 'from_id'
has_many :referrals_as_to, :class_name => 'Referral', :foreign_key => 'to_id'
end
referral.rb
class Referral < ActiveRecord::Base
belongs_to :doctor
end
答案 0 :(得分:0)
使用此功能。
<% if @doctor.referrals_as_from.count > 0 %>
<% @doctor.referrals_as_from.each do |referral| %>
<%= referral.doctor.full_name %>
<% end %>
<% end %>
答案 1 :(得分:0)
推荐模型实际上有两个与之关联的医生,由to_id和from_id定义。所以你可能需要做以下事情:
referral.rb
class Referral < ActiveRecord::Base
belongs_to :to_doctor, :class_name => "Doctor", :primary_key => "to_id", :foreign_key => "npi"
belongs_to :from_doctor, :class_name => "Doctor", :primary_key => "from_id", :foreign_key => "npi
end
然后代码变为
referral.to_doctor.full_name