2012-09-09 34 views
0

我有了一個模型:Ruby on Rails的多個在同一個表聯接

Class Bar < ActiveRecord::Base 
#... 
belongs_to :foo_A, :class_name => "Foo" 
belongs_to :foo_B, :class_name => "Foo" 

而且我想從表foo中讀取信息如下(代碼將無法正常工作):

Bar.joins(:foo_A, :foo_B).select("bars.*, foos_a.name as foo_a_name, foos_b.name as foo_b_name").all 

當然,沒有foos_a或foos_b表...只是foos表。

有沒有辦法做到這一點,而無需編寫整個sql查詢?

感謝

回答

0

你必須爲每個belongs_to的的foreign_key。請參閱Same Model for Two belongs_to Associations的更多內容

belongs_to :foo_A, :class_name => "Foo", :foreign_key => 'foo_a_id' 
belongs_to :foo_B, :class_name => "Foo", :foreign_key => 'foo_b_id' 
+0

謝謝您的回答。然而,我沒有關聯的問題,只是當我加入foos表時應該使用的查詢,所以我可以得到foo_a和foo_b的名字。 – user1251614