对于CRM应用程序,我希望能够将Person模型直接关联到Account模型或公司模型,而Company模型又与Account模型相关联。此外,我想将地址模型与公司或人员相关联。这就是我的想法:
class Account
has_many :Persons
has_many :Companies
end
class Person
belongs_to :Account
belongs_to :Company
has_one :Address
end
class Company
belongs_to :Account
has_many :Persons
has_one :Address
end
class Address
belongs_to :Person
belongs_to :Company
end
因此,根据协会,帐户可以是“个人帐户”或“企业帐户”。它们是相互排斥的。我打算在Person表中使用外键account_id和company_id。出于同样的原因,我将在地址表中使用外键person_id和company_id。在每种情况下,一个外键都为空。
这在Rails中可以吗?如果没有,我们将非常感谢任何建议。
答案 0 :(得分:9)
看看多态关联。我认为这就是你要找的东西: http://guides.rubyonrails.org/association_basics.html#polymorphic-associations
class Account
belongs_to :User, :polymorphic => true
end
class Person
belongs_to :Account, :as => :User
belongs_to :Company
has_one :Address, :as => :User
end
class Company
belongs_to :Account, :as => :User
belongs_to :Persons
has_one :Address, :as => :User
end
class Address
belongs_to :User, :polymorphic => true
end
...
问候Sven