将时间戳添加到现有表怎么做?

  • 回答 (2)
  • 关注 (0)
  • 查看 (11)

我需要将时间戳(created_at updated_at)添加到现有表中。我尝试了下面的代码,但它没有奏效。我也试过了我在网上找到的其他解决方案,但他们也不管用。

class AddTimestampsToUser < ActiveRecord::Migration
    def change_table
      add_timestamps(:users)
    end
end

我该怎么做?

i太过热闹的梦i太过热闹的梦提问于
梦洫蝶回答于

时间戳助手仅在create_table封锁。可以通过手动指定列类型来添加这些列:

class AddTimestampsToUser < ActiveRecord::Migration
  def change_table
    add_column :users, :created_at, :datetime, null: false
    add_column :users, :updated_at, :datetime, null: false
  end
end

虽然这不具有与add_timestamps

壹捌柒肆手机APP项目经理,产品经理。业余服务器、前端、iOS 开发人员。回答于

迁移只是两个类方法(或者3.1中的实例方法):updown(有时change实例方法(3.1中的实例方法)。希望您的更改进入up方法:

class AddTimestampsToUser < ActiveRecord::Migration
    def self.up # Or `def up` in 3.1
        change_table :users do |t|
            t.timestamps
        end
    end
    def self.down # Or `def down` in 3.1
        remove_column :users, :created_at
        remove_column :users, :updated_at
    end
end

如果你在3.1,那么你也可以用change(谢谢戴夫):

class AddTimestampsToUser < ActiveRecord::Migration
    def change
        change_table(:users) { |t| t.timestamps }
    end
end

也许你搞不懂def changedef change_table,和change_table.

扫码关注云+社区