如何在以下情况下对关联进行建模。

时间:2016-05-13 10:47:15

标签: ruby-on-rails

我在系统中的实体之间有以下关联:

商店 供应商 和用户

  • 商店可以有很多供应商,
  • 供应商可以属于多个商店。
  • 用户可以拥有多个商店,但如果是与供应商相关的用户,例如为该供应商工作的人,则该用户的行为会发生变化。

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

我尝试了多态关联,但由于用户的行为会根据角色而变化,无论他是商店用户还是供应商用户,我都不能使用它。

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

2 个答案:

答案 0 :(得分:0)

如果我准确理解您的要求,您需要建模:

  • 供应商可以拥有多家商店
  • 商店可以有很多供应商
  • 供应商可以拥有多个用户
  • 商店可以有很多用户

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

答案 1 :(得分:0)

对于您的用户模型,请参阅问题中的以下一行:

“但如果是与供应商相关的用户,比如为该供应商工作的人,那么该用户的行为会发生变化”

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