2015-08-15 38 views
4

Ruby on rails具有t.timestamps方法,該方法創建兩列created_at和updated_at。我怎樣才能使created_at列?Ruby Rails - 使用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 
+0

您是否嘗試在一次遷移中添加時間戳,然後在稍後的遷移中刪除'updated_at'? – yuval

回答

3

兩個嘗試是好的,但包含語法錯誤。

第一次嘗試的問題在於t。數據類型不是列名。

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

在第二次嘗試的問題是,remove_column並不裏面create_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
t.datetime :created_at, null: false 

就像任何其他列。由於列名,Rails仍然會照顧魔術更新。

1

你可以這樣做:

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