【问题标题】:Rails Devise User both belongs_to and has_manyRails 设计用户都属于_to 和 has_many
【发布时间】:2012-09-13 21:01:24
【问题描述】:

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

我有 4 个模型:UserTransferBuildingBag

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

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

提前致谢!

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 太完美了!昨晚我有这个想法,但不知道它叫什么。所以我坚持我的做法。感谢您为我指明正确的方向。
    猜你喜欢
    • 2023-04-11
    • 2011-01-22
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多