Ruby Rails - 使用 created_at 列创建 Table

Ruby Rails - Make Table With created_at Column

rails 上的

Ruby 具有创建两列的 t.timestamps 方法,created_at 和 updated_at。我怎样才能只制作 created_at 列?

这个有效

class CreateLinesSources < ActiveRecord::Migration
  def change
    create_table :lines_sources do |t|
      t.timestamps null: false
    end
  end
end

这两个我都想工作但是失败了

class CreateLinesSources < ActiveRecord::Migration
  def change
    create_table :lines_sources do |t|
      t.created_at null: false
    end
  end
end

class CreateLinesSources < ActiveRecord::Migration
  def change
    create_table :lines_sources do |t|
      t.timestamps null: false
      remove_column updated_at
    end
  end
end
t.datetime :created_at, null: false

就像任何其他专栏一样。 Rails 由于列名,仍将负责魔术更新。

你可以这样做:

def change
  create_table :lines_sources do |t|
    t.datetime :created_at, null: false
  end
end

两次尝试都没有问题,但包含语法错误。

第一次尝试的问题是 t.是数据类型而不是列名。

class CreateLinesSources < ActiveRecord::Migration
  def change
    create_table :lines_sources do |t|
      t.datetime :created_at, null: false
    end
  end
end

第二次尝试的问题是 remove_columncreate_table 块内不起作用。您可以将其移出块并提供正确的语法以删除该列。

class CreateLinesSources < ActiveRecord::Migration
  def change
    create_table :lines_sources do |t|
      t.timestamps null: false
    end
    remove_column :line_sources, :updated_at, :datetime
  end
end