我在系统中的实体之间有以下关联:
商店 供应商 和用户
此外,对于商店,可以有多个角色。
我尝试了多态关联,但由于用户的行为会根据角色而变化,无论他是商店用户还是供应商用户,我都不能使用它。
也不能使用STI,因为大量的列会有所不同。任何想法都会有所帮助。
答案 0 :(得分:0)
如果我准确理解您的要求,您需要建模:
这需要供应商和商店之间的has_and_belongs_to_many
关系。它还需要用户和供应商/商店之间的多态关联。您应该能够使用多态关联。这样,您可以通过检查其角色和关联来管理每个用户的系统行为。例如,如果您创建了名为userable
的多态关联,则可以使用user.userable
来获取供应商或商店,并vendor.users
或store.users
来访问这些实例的用户。
答案 1 :(得分:0)
对于您的用户模型,请参阅问题中的以下一行:
“但如果是与供应商相关的用户,比如为该供应商工作的人,那么该用户的行为会发生变化”
我会在我的用户表中添加一个名为user_type
的列,并创建一些可用于过滤和分配权限的用户类型。 user_type
列可以是字符串字段,并明确命名为related
和not_related
,只是一个整数1或2或更多,甚至是一个布尔字段,如果没有去太多user_types
。