2016-05-13 83 views
0

我在系统实体之间的关联如下:如何在以下情况下建立关联模型?

商店 供应商 和用户

  • 商店可以有很多供应商,
  • 供应商可以同时属于多个门店。
  • 用户可以拥有多个商店,但是如果其与供应商相关的用户说某个人为该供应商工作,那么该用户的行为会发生变化。

此外,对于商店可以有多个角色。

我尝试过多态关联,但由于用户的行为取决于角色以及他是商店用户还是供应商用户,因此我无法使用该行为。

STI也不能使用,因为大量的列将有所不同。任何想法都会有所帮助。

+0

这怎么可能“供应商可以属于多个商店”? – Thorin

+0

属于只适用于当你存储其他表ID作为外键 – Thorin

+0

你需要多对多的商店和供应商之间的关系? – Thorin

回答

0

如果我理解你的要求准确地要建模:

  • 一个供应商可以有许多商店
  • 一个店可以有许多厂商
  • 一个供应商可以有很多用户
  • 一个商店可以有很多用户

这将需要一个has_and_belongs_to_many供应商和sto之间的关系回覆。它还需要用户和供应商/商店之间的多态关联。你应该应该能够使用多态关联。这样,您可以通过检查其角色和关联来管理每个用户的系统行为。例如,如果您创建了一个名为userable的多态关联,则可以使用用户user.userable来获取供应商或商店,并且vendor.usersstore.users可以访问这些实例的用户。

0

为了您的用户模型,关于这条线在你的问题:

“但如果谁是与供应商的用户,说一个人谁该供应商的工作,那么该用户的行为变化”

我会在我的用户表中添加一个名为user_type的列,并创建一些用户类型,您可以使用这些类型来过滤和分配权限。 user_type列可以是字符串字段,并且明确命名为relatednot_related,简单地是1或2的整数,或者更多,或者甚至是布尔字段(如果没有太多user_types)。

相关问题