【问题标题】:Should I use polymorphism to model these relationships?我应该使用多态性来模拟这些关系吗?
【发布时间】:2013-08-10 17:41:54
【问题描述】:

我正在开发一个包含 ProjectUserGroup 模型的应用。一个项目有很多组,一个用户通过 Membership 模型属于很多组。我有两个选择:

  1. 创建项目时,会创建一个默认组。任何参与此项目的人都会自动添加到其中。

  2. 使成员资格具有多态性,以便用户可以成为项目的成员和项目中的组。

这两种方法都有更广泛的含义:其他模型将发挥作用,例如:文件、发布和任务。

如果我选择选项 2,这些模型也必须是多态的。但它会简化一些事情。

如果我选择选项二,我会放弃多态性,但事情会变得有点复杂。例如,查找用户项目意味着我必须查询用户组,然后查询与这些组关联的项目,然后确保项目是唯一的。

有没有人遇到过类似的情况,有什么建议或其他方法的优缺点吗?

我真的宁愿完全放弃组,但这是对权限的要求,以根据组分隔内容。

【问题讨论】:

    标签: ruby-on-rails data-modeling


    【解决方案1】:

    我认为最好的选择是创建一个默认组,因为:

    1. 那么你就可以有一个清晰的结构:

      • projects - 有很多组
      • groups -> 有很多用户等,
    2. 您将拥有轻松管理群组的灵活性

    3. 您的核心结构很简单,因此多年后易于扩展

    4. 您正在通过自动化一步来简化用户的工作流程。我个人相信,如果您能让用户快速启动并运行,他们会发现您的系统用户友好

    【讨论】:

      猜你喜欢
      • 2016-09-04
      • 1970-01-01
      • 1970-01-01
      • 2013-02-04
      • 1970-01-01
      • 2015-05-27
      • 1970-01-01
      • 2019-02-13
      • 2011-07-03
      相关资源
      最近更新 更多