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 Shop
和Next Shop
都是Shop模型中的外键。
答案 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
。