Ответ 1
Это правильно! и вы также можете пойти с:
def self.down
remove_column :users, :client_id
end
После создания файла миграции с rails generate migration AddClientToUser
я могу изменить файл миграции следующим образом:
class AddClientToUser < ActiveRecord::Migration
def self.up
change_table :users do |t|
t.references :client
end
end
def self.down
change_table :users do |t|
t.remove :client_id
end
end
end
Правильно ли это изменить обратный столбец, добавленный в перенос?
Это правильно! и вы также можете пойти с:
def self.down
remove_column :users, :client_id
end
После рельсов 4 вы можете сделать следующее
class AddClientToUser < ActiveRecord::Migration
def change
add_reference :users, :client, index: true
end
end
Он будет обрабатывать вверх и вниз для вас, а также создавать индекс внешнего ключа. Вы также можете использовать remove_reference
, чтобы сделать обратное.
С Rails 4 вы можете просто ввести:
$rails создает миграцию клиента AddClientRefToUser: ссылки
в консоли, и это сделает то же самое, что сказал Райан.
Rails 4.2.1
rails g migration RemoveClientFromUsers client:references
Сгенерирует аналогичную миграцию:
class RemoveClientFromUser < ActiveRecord::Migration
def change
remove_reference :users, :client, index: true, foreign_key: true
end
end
Кроме того, можно добавить другую или другую ссылку (ы), добавив:
add_reference :users, :model_name, index: true, foreign_key: true
в самом методе change
.
И, наконец, запуск rake db:migrate
после сохранения изменений в миграции приведет к желаемым результатам.