Rails 迁移 - 更改模型的属性名称

Rails migration - changing the attribute name of a model

Comment 的 Rails 模型中,我自动提供 messagedate 属性以及 created_atupdated_at 属性通过 ActiveRecord::Migration 通过 t.timestamps.

目前 comments table 的日期属性在数据库 ( postgresql ) 中有值。我想删除 Comment 模型中的 date 属性,并在执行此操作时想更新 created_at 属性的 comments db table 值 date属性。

我该怎么做?

您可以在迁移文件中编写 rails 代码,如下所示,以更新列值。

假设列 date 的数据类型是 timestamp

class RemoveDateFromComment < ActiveRecord::Migration
  def up
    Comment.all.each do |comment|
      comment.update(created_at: comment.date)
    end

    remove_column :comments, :date, :timestamp
  end

  def down
    add_column :comments, :date, :timestamp

    Comment.all.each do |comment|
      comment.update(date: comment.created_at)
    end
  end
end