2011-12-17 10 views
0

したがって、従来のデータベースに接続しています。私は2つのテーブル、SitesStatesを持っています。なぜ私の団体はActiveRecordで双方向に行きませんか?

Siteは1 Stateがあり、私は手動で外部キーと主キーを設定する必要が見ることができるようにStateは多くの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 

何をしているのですか?

ありがとうございました。

# 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で見てみましょう:

答えて

1

あなたはペアhas_manybelongs_toを使用する必要があります。

1対多の関連付けがある場合は、2つのモデルクラスでbelongs_tohas_manyを使用するのが標準的な方法です。 has_oneは、特殊ケースのhas_manyです。 belongs_toは、外部キーが関連付けを宣言するモデルにあり、has_onehas_manyは外部キーが他のモデルにあると言う。

関連する問題