在AR关系模型中可能有两个不同的外键

时间:2012-03-06 21:56:39

标签: ruby-on-rails ruby-on-rails-3 activerecord

我有一个有问题的关系,有些物品可以捆绑到汽车里。

例如:

class Item < ActiveRecord::Base
  has_many :object_connections, :foreign_key => 'engine_id'
  has_many :object_connections, :foreign_key => 'chassis_id'

看起来它只看最后一个。有没有办法指定?此外,是否可以添加:is_engine => true等条件?这是一个被采用的项目,只是试图让它发挥作用。

THX

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找has_one association :class_name选项:

class Item < ActiveRecord::Base
  has_one :engine,  :foreign_key => 'engine_id',  :class_name => 'ObjectConnection'
  has_one :chassis, :foreign_key => 'chassis_id', :class_name => 'ObjectConnection'
end

关联需要唯一命名,通常ActiveRecord可以根据关联找出:class_name;但是,你有两件东西指向同一个地方,所以你必须手工连接所有东西。