Ruby on rails Rails设计的用户既属于,又有很多

Ruby on rails Rails设计的用户既属于,又有很多,ruby-on-rails,ruby,associations,has-and-belongs-to-many,Ruby On Rails,Ruby,Associations,Has And Belongs To Many,在花了几天的时间在网上寻找答案后,我想我应该寻求帮助。我试图找出使用Rails关联实现这些关系的最佳方法 我有4种型号:User、Transfer、Building和Bag 用户具有角色属性。角色的可能值为'admin','building\u contact'和'guest' 这就是它在树结构中的样子。管理员、来宾和构建联系人是@用户的角色: Admin | Transfer / \ Guest Bui

在花了几天的时间在网上寻找答案后,我想我应该寻求帮助。我试图找出使用Rails关联实现这些关系的最佳方法

我有4种型号:
User
Transfer
Building
Bag

用户
具有
角色
属性。
角色
的可能值为
'admin'
'building\u contact'
'guest'

这就是它在树结构中的样子。
管理员
来宾
构建联系人
@用户
的角色:

Admin | Transfer / \ Guest Building | | Bag BuildingContact 管理 | 转移 / \ 宾客大厦 | | 制袋触点 因此:

管理员有很多:传输

传输属于:admin

中转站有很多客人

客人所属\转机

客人有很多包

转让属于:建筑物

建筑有许多:传输

建筑有很多:建筑联系人

实现与
用户
模型的关系的最佳方式是什么?


提前谢谢

我想问的一个基本问题是:

用户是否有多个角色?我猜不会,因为你只有一个角色属性。它们可能共享很多东西,但我要说的是,不同用户类型的业务逻辑将创建不同的模型。放弃该角色属性,改为使用类型属性和STI如何

class Admin < User; end
class Guest < User; end
class BuildingContact < User; end
class-Admin

这样,您将拥有继承的用户功能,但您可以在适当的地方定义不同的业务逻辑。您可以将其扩展到不同的控制器和视图中,否则我认为您可能会面临拥有比您想要的更大的用户类的风险。

太好了!我昨晚有这个主意,但不知道叫什么。所以我坚持我的做法。谢谢你给我指明了正确的方向。