【问题标题】:Rails - how to add timestamps to a model?Rails - 如何向模型添加时间戳?
【发布时间】:2012-01-05 21:49:09
【问题描述】:

我有一个包含这些列的现有模型(和表):idnamecity。在这个表中是数据,我想在这个表中添加列 created_atupdated_at - 谁能给我帮助,怎么做?我的意思是 - 如果我创建一个模型,那么这两列是自动创建的,并且时间信息总是自动插入,当我在那里保存一些东西时。

现在可以通过自动插入时间数据来添加这两列吗?

【问题讨论】:

  • 那么您有一个想要添加时间戳的现有模型?你使用的是什么版本的 Rails?
  • rails activerecord 自动创建时间戳列,为什么要添加时间戳列?
  • @megas,他可能已经从最初的迁移中删除了它们

标签: mysql ruby-on-rails ruby time


【解决方案1】:

这应该允许您将时间戳列添加到已经存在的模型中

rails generate migration add_timestamps_to_users

这将为您创建一个迁移文件。打开它并进行必要的更改

class AddTimestampsToUsers < ActiveRecord::Migration
  # in my example i'm using `users` table; change this to match your table name
  def change_table :users do |t|
    t.timestamps
  end
end

然后迁移你的数据库

rake db:migrate

【讨论】:

  • 好答案,注意您要修改命令以匹配您正在修改的模型的名称。
  • 此解决方案不适用于包含数据的表,因为新创建的列应具有默认值,并且“时间戳”语法不允许指定它们。
  • Paul,您希望如何为预先存在的记录补充日期/时间值?我认为null 值对于在时间戳列存在之前创建的记录就足够了。
【解决方案2】:

应该注意的是,虽然 maček 的回答是正确的,但他没有使用正确的迁移语法(忘记了“更改”方法)。

所以这是他的正确语法的答案:

这应该允许您将时间戳列添加到已经存在的模型中

rake generate migration add_timestamps_to_users

这将为您创建一个迁移文件。打开它并进行必要的更改

class AddTimestampsToModel < ActiveRecord::Migration
  # in my example i'm using `users` table; change this to match your table name
  def change
    change_table :users do |t|
      t.timestamps
    end
  end
end

然后迁移你的数据库

rake db:migrate

【讨论】:

    【解决方案3】:

    add_timestamps 是用于此目的的专用方法:

    class AddTimestampsToUsers < ActiveRecord::Migration
      def change
        add_timestamps :users
      end
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-21
      • 2015-10-24
      相关资源
      最近更新 更多