0

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

我有 4 个模型:UserTransfer和。BuildingBag

AUser有一个role属性。role的可能值为'admin'和。'building_contact''guest'

这就是它在树形结构中的样子。,Admin和是 a 的Guest作用:BuildingContact@user

           行政
             |
         转移
        / \
     贵宾楼
       | |
      包包建设联系方式

所以:

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

提前致谢!

4

1 回答 1

2

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

一个用户会有多个角色吗?我猜不是,因为您只有一个角色属性。他们可能共享很多东西,但我想说不同用户类型的业务逻辑会创建不同的模型。放弃该角色属性并使用类型属性并使用 STI 怎么样?

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

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

于 2012-09-13T21:27:04.220 回答