用于多个唯一字段的相同外键

时间:2012-01-04 17:27:22

标签: ruby-on-rails

RoR中的快速问题:是否可以让两个字段使用同一模型中的外键?

例如,我是一名员工。我想要两个领域:我现在的店铺,以及将来我将搬到的一家商店。在我的模型中,如何使两个字段具有相同的foriegn键,但具有不同的值。

很难解释......

一个例子

EMPLOYEE TABLE
----------------------------------------------
Name        Current Shop ID       Next Shop ID
John Doe    2                     1 

SHOP TABLE
----------------------------
ID          Shop Name
1           Jims Tools
2           Johns Tools

Employee模型中,我希望Current ShopNext Shop都是Shop模型中的外键。

2 个答案:

答案 0 :(得分:0)

class Employee < ActiveRecord::Base
  has_one :current_shop, :class_name => Shop
  has_one :next_shop, :class_name => Shop
end

class Shop < ActiveRecord::Base
  belongs_to :current, :class_name => Employee
  belongs_to :next, :class_name => Employee
end

答案 1 :(得分:0)

如果外键与表名不匹配,则只需指定它即可。但是你可以拥有你想要的任意数量。

class Employee < ActiveRecord::Base 
  blongs_to :current_shop, :class_name => Shop, :foreign_key => "current_shop_id"
  blongs_to :next_shop, :class_name => Shop, :foreign_key => "next_shop_id"
end

这里需要注意的重要一点是,您必须在具有外键的模型中指定belongs_to。如果Employee的密钥引用Shop,则Employee belongs to a Shop

如果Comment有一个帖子的foreign_key,那么Comment belongs to a Post