所以我连接到遗留数据库。我有两个表,Sites
和States
。
Site
有一个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
我做错了什么?
感谢。
答案 0 :(得分:1)
您应该使用has_many
,belongs_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_to
和has_many
。 has_one
是has_many
的一个特例。 belongs_to
表示外键在模型中声明了关联,has_one
,has_many
表示外键在另一个模型中。