2011-12-17 55 views
0

所以我連接到一個遺留數據庫。我有兩個表格,SitesStates爲什麼我的關聯在ActiveRecord中無法兼顧?

一個Site有一個StateState可以屬於很多Sites

# Sites.rb 
has_one :state, :primary_key => "StateKey", :foreign_key => "StateKey" 

# States.rb 
belongs_to :sites, :class_name => "Sites", :primary_key => "SiteKey", :foreign_key => "SiteKey" 

正如你可以看到我有手動設置的外鍵和主鍵。

所以此工程:

Sites.first.state # one record returned (the state) 

這不:

States.first.sites # nil returned. Doesn't even appear to hit AR 

我在做什麼錯?

謝謝。

回答

1

你應該使用對has_manybelongs_to

# Sites.rb 
belongs_to :state, :primary_key => "StateKey", :foreign_key => "StateKey" 

# States.rb 
has_many :sites, :class_name => "Sites", :primary_key => "StateKey", :foreign_key => "StateKey" 

this guide看看。

當您有一對多關聯時,標準做法是在兩個模型類中使用belongs_tohas_manyhas_onehas_many的特例。 belongs_to表示外鍵在聲明關聯的模型中,並且has_one,has_many表示外鍵在另一模型中。

相關問題