Класс ActiveRecord::ConnectionsAdapters::TableDefinition::Table
отвечает за все высокоуровневые миграции, такие как column
, index
, index_exists?
и так далее. Он имеет метод timestamps
, который добавляет для вас столбцы created_at
и updated_at
:
# Adds timestamps (+created_at+ and +updated_at+) columns to the table.
# See SchemaStatements#add_timestamps
# t.timestamps
def timestamps
@base.add_timestamps(@table_name)
end
По сути, вы можете исправить это таким образом (где-то в ваших инициализаторах):
class ActiveRecord::ConnectionsAdapters::TableDefinition::Table
def timestamps
@base.add_timestamps(@table_name)
@base.add_column(@table_name, :deleted_at, :datetime)
end
end
То же самое относится и к созданию нового макроса:
class ActiveRecord::ConnectionsAdapters::TableDefinition::Table
def publishing
@base.add_column(@table_name, :publish_up, :datetime)
@base.add_column(@table_name, :publish_down, :datetime)
end
end
После этого вы сможете делать следующие вещи:
class CreateUsers < ActiveRecord::Migration
def self.up
create_table :users do |t|
t.string :first_name
t.string :last_name
t.timestamps
t.publishing
end
end
def self.down
drop_table :users
end
end
Ознакомьтесь с исходным кодом на github для получения дополнительной информации.
person
twonegatives
schedule
13.06.2014