在differen对象中存储不同对象id_s的多对多关系

时间:2016-02-19 20:29:05

标签: ruby-on-rails relational-database

您好我想在Rails中创建一个关系。

我有战士模型,法师模型和派系模型。

我想创建一个这样的关系:

warrior model can have_many factions 
mage model can have many factions. 
Faction model can have many warriors and mages

如何创建战士和法师对象与派系对象之间的关系,这将存储属于特定派别/派系的战士和法师的id_s?

所以当我打电话时:

 faction.warriors I get warriors of specific faction. 
 faction.mage I get mages of this faction
 warriors.faction I get the warrior faction.
 mage.faction I get the mage faction. 

我在考虑多态关联。但它只有一个所有者。

有任何线索吗?

2 个答案:

答案 0 :(得分:0)

  

如何创建战士和法师对象与派系对象之间的关系,这将存储属于特定派系/派系的战士和法师的id_s?

has_and_belongs_to_many关系

Warrior
  has_and_belongs_to_many :factions

Mage
  has_and_belongs_to_many :factions

Faction
  has_and_belongs_to_many :mages
  has_and_belongs_to_many :warriors

答案 1 :(得分:0)

你是否想要一个many_to_many或has_many关系并不是很清楚。

但是你在这里写的是:

  派系。战士我得到了特定阵营的战士。   faction.mage我得到了这个派系的法师   warriors.faction我得到了战士派系。   mage.faction我得到了法师派。

看来您只需要一个简单的关联。如果这是正确的,您的课程应如下所示:

class Warrior < ActiveRecord::Base
    belongs_to :faction
end

class Mage < ActiveRecord::Base
    belongs_to :faction
end

class Faction < ActiveRecord::Base
    has_many :warriors
    has_many :mages
end

干杯!