Ruby Rails - 使用created_at列创建表

时间:2015-08-15 01:20:44

标签: sql ruby-on-rails ruby timestamp

Ruby on rails有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

3 个答案:

答案 0 :(得分:6)

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

第一次尝试的问题是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

答案 1 :(得分:4)

t.datetime :created_at, null: false

就像任何其他专栏一样。由于列名,Rails仍然会处理魔术更新。

答案 2 :(得分:1)

你可以这样做:

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