【问题标题】:When Should Data be Included in its own Model in Rails?什么时候应该将数据包含在 Rails 中自己的模型中?
【发布时间】:2013-08-09 15:28:25
【问题描述】:

什么时候应该在 Rails 中将数据包含在它自己的模型中,什么时候可以将它作为列添加到当前模型中?

例如,假设我想向用户添加付费会员选项。我应该创建一个新的模型成员资格并让用户has_one Membership,还是应该只向用户添加几列:boolean membership 和一个date expiration(也许还有一个boolean auto-renew)?

【问题讨论】:

    标签: ruby-on-rails database ruby-on-rails-3 architecture model


    【解决方案1】:

    这取决于未来。正如您刚才在问题中所说,“也许boolean auto-renew”已经是您要在用户会员系统中添加的另一个选项。

    此外,用户会员资格在未来可能需要更多选项(例如auto-renew,或用于跟踪用户何时成为会员、持续多长时间等的历史系统)。

    • 如果您想要一个灵活的(易于添加选项/方法/属性/东西)会员系统,您应该创建一个UserMembership 模型。 (您可以拥有用户成员资格的历史记录,这对于统计数据非常有用)。

    • 如果您只需要一个只有一两个选项的小型会员系统(但请尝试在未来考虑!),您可以添加一个列 expiration_date 并且当它是nil,表示用户没有会员资格(所以不需要boolean membership),如果有值,那么它是/曾经是会员,如果这个expiration_date > Date.today,那么用户仍然是会员。

    【讨论】:

    • 假设我最终需要添加 4 列(一段时间后)。如果它们都附加到 User 而非会员为 nil 会不会很糟糕?
    • 拥有很多 nil 值并不是“坏事”。但它证明了模型可能更适合这种情况。另外,只为“一个”系统添加4列,太多了!我认为你应该用这 4 列制作它的模型;)@am-rails
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    相关资源
    最近更新 更多