【问题标题】:Why have created_at and updated_at?为什么有created_at 和updated_at?
【发布时间】:2015-10-16 09:58:19
【问题描述】:

许多编程框架会自动将 2 个字段填充到模型/表/集合中。在 Rails 中,这两个字段是 created_atupdated_at。字段的功能不言自明。

created_at

第一次在数据库中创建记录时的时间戳。

updated_at

对存储在表中的任何数据的最近更改的时间戳。

我正在开发一个 Meteor 项目,该项目没有开箱即用这些字段,因此在我的项目中添加了 createdAtupdatedAt

然后我开始思考:在什么情况下我们需要知道第一次创建记录的时间,最后一次更新还不够吗?

【问题讨论】:

    标签: ruby-on-rails database


    【解决方案1】:
    • 能够按最新/最旧对记录进行排序
    • 能够显示有关对象的信息(如user asked 10 mins ago
    • 能够分析数据(例如检查提出问题的时间)
    • 当您想要跟踪/调试/审核我们系统中发生的事情时,它非常有用

    .. 等等。当然,您的记录可能现在不需要它,但最好保存此信息,因为如果您现在不保存它,以后将没有简单的方法来想出它。

    【讨论】:

    • 这些都是 updated_at 的用例......但没有一个适用于 created_at
    • 嗯,不知道我是否理解 - 您如何使用 updated_at 按最旧/最新对记录进行排序并获取有关首次创建时间的信息?还是您打算保留更新时间戳的全部历史记录?是的 - 在某些情况下可能是个好主意,在其他情况下可能是必要的,但会使查询/方法更加复杂 - 所以请确保避免使用一个真正值得的小字段。
    【解决方案2】:

    不是每张桌子都需要这些。如果您没有明确的用例,请不要添加这些用例。您的数据库和应用程序会因计算、存储和读取它们而受到额外的性能影响。

    【讨论】:

      【解决方案3】:

      我认为在很多情况下,您都想知道什么时候第一次创建某些东西。

      以stackoverflow为例:

      知道何时提出问题很重要。如果您在两年前提出这个问题,然后在昨天进行了编辑,那与您昨天提出的问题大不相同。

      知道问题何时得到回答很重要。想想一些徽章。 “好奇:在 5 天内提出一个广受欢迎的问题,并保持积极的问题记录。”。如果有人重新标记我的所有问题,这会触发 updated_at 设置为今天。然后,我从在不同的日子问问题变成了似乎在同一天得到回答。

      这只是两个例子。一般的答案是:当您想知道某个对象何时首次存在于您的系统中时,您需要created_at。尤其是当您要更新该对象时。

      【讨论】:

      • 简单的 updated_at 中缺少的是更改历史记录……仅保留最近的更改。因此,虽然 created_at 会为您提供一些额外的信息,但使用此方法仍然会丢失大量数据。
      • 提供更改历史记录是一个复杂得多的问题,这不是您希望通过 rails 开箱即用的问题(通常)。尽管像github.com/airblade/paper_trail 这样,但周围有一些宝石可以解决这个问题
      猜你喜欢
      • 2015-10-26
      • 1970-01-01
      • 2015-11-26
      • 2017-05-26
      • 1970-01-01
      • 2018-09-16
      • 1970-01-01
      • 2011-06-11
      • 1970-01-01
      相关资源
      最近更新 更多