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
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
移行への変更を保存した後、目的の結果が生成されます。
Rails 4の後、次のことができます
class AddClientToUser < ActiveRecord::Migration
def change
add_reference :users, :client, index: true
end
end
外部キーインデックスの作成と同様に、アップとダウンを処理します。 remove_reference
反対のことを行います。
Rails 4を使用すると、次のように入力できます。
$ Rails移行の生成AddClientRefToUser client:references
コンソールで、これはライアンが言ったことと同じになります。