【问题标题】:Data Modeling Question for RailsRails 的数据建模问题
【发布时间】:2010-11-17 02:51:31
【问题描述】:

我有以下实体。

  • 用户
  • 事件
  • 费用
  • 客人

用户是在我的网站上注册的人。事件是特定用户可以创建然后邀请人们(其他用户)的东西。费用由特定用户为特定事件创建,并且可以与该事件的其他用户/客人相关联(如用户 A 为用户 B 和用户 C 和客人 D 购买了东西)。来宾也由特定用户为特定事件创建,但一旦为事件创建,与该事件关联的其他用户可以看到来宾。客人永远不会真正登录系统...它只是可能参加过活动但未在网站上注册的人的占位符。

我正试图围绕这些实体的has_manybelongs_to 属性。

这几乎就像在我的多对多关系表中一样,我需要另一列来标识人(用户或访客)的“类型”,以便我可以正确加入以从用户和访客中提取姓名等相应的表格。

我曾考虑在用户表中创建一个标志,说明该记录是否为访客(因此不需要该访客在网站上注册、登录等),但这似乎不是很干净。

非常感谢任何想法。

谢谢!

托马斯

【问题讨论】:

    标签: ruby-on-rails data-modeling


    【解决方案1】:

    在我看来,这听起来像是您自然而然地倾向于所谓的多态关联。看看 Ryan Bates 的 Railscast 可能对你有用:Polymorphic Associations

    【讨论】:

      【解决方案2】:

      我同意 Gav Polymorphic 只是一个表人的列类型和 tada

      class Person < ActiveRecord:Base
         #methods and associations all people have
      end
      class User < Person
         #methods and associations specific to users
      end
      class Guest < Person
         #methods and associations specific to guests
      end
      

      【讨论】:

      • 如果我采用这种方法,那么看起来有一个名为 people 的物理数据库表,其中包含用户和来宾,其中一个标志指示哪一个。我的用户是通过 restful_authentication 插件创建的,所以我不知道它的效果如何。你觉得有什么问题吗?如果这可行,那么对多态关联的需求就会消失(因为会使关联多态的项目现在包含在同一个物理表中)?
      • 只要 people 表包含 users/restful auth 所需的所有字段,这应该不是问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-29
      • 2017-10-13
      • 2021-02-02
      • 2011-11-22
      相关资源
      最近更新 更多