2016-05-29 65 views
0

我有以下型號:Rails的STI的has_many和belongs_to的繼續尋找類列

class Installation < ActiveRecord::Base 
    belongs_to :original_lead, class_name: 'Lead' 
end 

class Lead < ActiveRecord::Base 
    has_many :originated_installations, as: :original_lead, class_name: 'Installation' 
end 

鉛使用STI,具有類型列。

這意味着我希望每個主管有多個安裝。

問題是,當我嘗試做這樣的事情:

Lead.first.installations 

它會引發錯誤

PG::UndefinedColumn: ERROR: column installations.original_lead_type 
does not exist LINE 1: ...WHERE "installations"."original_lead_id" = $1 AND 
"installations"."original_lead_type" = $2 

所以,它正在尋找屬於一個特定的引線式安裝,但我不在乎鉛的類型。

我能夠通過更換鉛模型的has_many聲明變通方法如下:

has_many :originated_installations, inverse_of: :original_lead, 
foreign_key: :original_lead_id, class_name: 'Installation' 

所以,是的,我的問題是解決了,我只是想分享,並知道是否有其他一些我可以用這個選項來代替。

回答

0

更換的has_many聲明如下解決了原來的問題:

class Lead < ActiveRecord::Base 
    has_many :originated_installations, inverse_of: :original_lead, 
foreign_key: :original_lead_id, class_name: 'Installation' 
end