2014-04-04 85 views
0

我有我的show.html.erb以下連接查詢。2個表(軌道4)

但是,我想通過在引用中使用標識的id(基本上是內部聯接)來交叉引用Doctors模型中的「full_name」列,而不是獲取id號列表。做這件事最優雅的方式是什麼?向控制器添加一個新方法並進行連接或包含,或者有更簡單的方法嗎?

型號:

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

能否請您解釋一下這個「doctor.npi」 field.What這意味着什麼? – Pavan

+0

doctor.npi is self.primary_key =「npi」 – user2923767

回答

0

使用此。

<% if @doctor.referrals_as_from.count > 0 %> 
     <% @doctor.referrals_as_from.each do |referral| %> 
     <%= referral.doctor.full_name %> 
     <% end %> 
<% end %> 
+0

你的回答與@sergio's不同。 – Pavan

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 
+0

嗯,仍然得到未定義的方法 – user2923767

+0

改變referral.rb文件如上 – user2923767

+0

仍然沒有愛。 。 – user2923767