Rails has_many到同一个表

时间:2013-08-28 13:24:41

标签: ruby-on-rails

我有2张桌子

ACCRELATIONS
"ID"
"ACCDETAILS"
"ACCRELATIONSBIKEID"
"ACCRELATIONSCARID"
"ACCRELATIONSPERSONID"

ACCPEOPLE
"ID"
"FIRSTNAME"
"LASTNAME"
"ACCRELATIONSID"

关系应该像

class ACCPEOPLE < ActiveRecord::Base
has_many :ACCRELATIONS, :foreign_key => 'ACCRELATIONSBIKEID'
has_many :ACCRELATIONS, :foreign_key => 'ACCRELATIONSCARID'
has_many :ACCRELATIONS, :foreign_key => 'ACCRELATIONSPERSONID'

这轨道逻辑是否有效?因此,基本上可以在三个关系中的任何一个上加入“ACCPEOPLE”记录。

EDIT ====

谢谢!我用你的答案中的逻辑来解决现在的另一种关系。通过在另一个表中添加3个关系作为belongs_to来完成。

1 个答案:

答案 0 :(得分:1)

您的关联名称应该是唯一的。如果你给他们相同的名字,你如何访问这些关联?

class AccPeople < ActiveRecord::Base
has_many :bike_accelerations, :foreign_key => 'ACCRELATIONSBIKEID', :class_name => "<your_classname>"
has_many :car_accelerations, :foreign_key => 'ACCRELATIONSCARID', :class_name => "<your_classname>"
has_many :person_accelerations, :foreign_key => 'ACCRELATIONSPERSONID', :class_name => "<your_classname>"

将您的关联重命名为上面。

请关注rails naming conventions