Rails设计用户belongs_to和has_many

时间:2012-09-13 21:01:25

标签: ruby-on-rails ruby associations has-and-belongs-to-many

在尝试在线寻找答案几天后,我想我应该寻求帮助。我正试图找出使用Rails Associations实现这些关系的最佳方法。

我有4个模型:UserTransferBuildingBag

User具有role属性。 role的可能值为'admin''building_contact''guest'

这就是树结构中的样子。 AdminGuestBuildingContact@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模型实现关系的最佳方式是什么?

提前致谢!

1 个答案:

答案 0 :(得分:2)

我的一个基本问题是:

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

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

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