在尝试在线寻找答案几天后,我想我应该寻求帮助。我正试图找出使用Rails Associations实现这些关系的最佳方法。
我有4个模型:User
,Transfer
,Building
和Bag
。
User
具有role
属性。 role
的可能值为'admin'
,'building_contact'
和'guest'
。
这就是树结构中的样子。 Admin
,Guest
和BuildingContact
是@user
的角色:
Admin | Transfer / \ Guest Building | | Bag BuildingContact
因此:
Admin has_many :transfers
Transfer belongs_to :admin
Transfer has_many :guests
Guest belongs_to :transfer
Guest has_many :bags
Transfer belongs_to :building
Building has_many :transfers
Building has_many :building_contacts
与User
模型实现关系的最佳方式是什么?
提前致谢!
答案 0 :(得分:2)
我的一个基本问题是:
用户是否有多个角色?我猜不是,因为你有一个角色属性。他们可能分享很多东西,但我会说不同用户类型的业务逻辑会创建不同的模型。如何放弃该角色属性,而是使用类型属性并使用STI?
class Admin < User; end
class Guest < User; end
class BuildingContact < User; end
这样您将拥有继承的用户功能,但您可以在适当的位置定义不同的业务逻辑。你可以将它扩展到不同的控制器和视图中,否则我认为你冒着比你想要的更大的用户类风险。