2015-08-15 3 views
4

Ruby on rails имеет метод t.timestamps, который создает два столбца, created_at и updated_at. Как я могу создать только столбец created_at?Ruby Rails - Make Table With 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