Rails Migration с добавлением и удалением ссылки
После создания файла миграции с 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
Это правильный способ сторнировать ссылочный столбец, добавленный в миграцию?
4 ответа
Это верно! и вы также можете пойти с:
def self.down
remove_column :users, :client_id
end
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
после сохранения изменений в миграции, будут выдаваться желаемые результаты.
После рельсов 4 вы можете сделать следующее
class AddClientToUser < ActiveRecord::Migration
def change
add_reference :users, :client, index: true
end
end
Он будет обрабатывать для вас вверх и вниз, а также для создания индекса внешнего ключа. Вы также можете использовать remove_reference
сделать обратное.
С Rails 4 вы можете просто набрать:
$ rails генерирует миграцию клиента AddClientRefToUser: ссылки
в консоли, и это сделает то же самое, что сказал Райан.