[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
2022-03-18 15:55:31
質問内容
カラムの名前を間違えてしまいました
hased_password
ではなく
hashed_password
.
このカラムの名前を変更するために、マイグレーションを使用して、データベーススキーマをどのように更新すればよいですか?
解決方法は?
rename_column :table, :old_column, :new_column
これを行うには、おそらく別のマイグレーションを作成することになるでしょう。(リネーム
FixColumnName
を使用します)。
script/generate migration FixColumnName
# creates db/migrate/xxxxxxxxxx_fix_column_name.rb
そして、あなたの意志に沿うようにマイグレーションを編集します。
# db/migrate/xxxxxxxxxx_fix_column_name.rb
class FixColumnName < ActiveRecord::Migration
def self.up
rename_column :table_name, :old_column, :new_column
end
def self.down
# rename back if you need or do something else or do nothing
end
end
Rails 3.1の場合、使用します。
一方
up
と
down
メソッドはまだ適用されますが、Rails 3.1では
change
メソッドは、"データベースをマイグレートする方法を知っており、マイグレーションがロールバックされたときに、別途ダウンメソッドを書く必要なくそれを元に戻すことができます"。
"をご覧ください。 アクティブレコードマイグレーション "でご確認ください。
rails g migration FixColumnName
class FixColumnName < ActiveRecord::Migration
def change
rename_column :table_name, :old_column, :new_column
end
end
たまたまカラムがたくさんあって名前を変えなければならない場合、あるいはテーブル名を何度も繰り返さなければならないようなことがあった場合。
rename_column :table_name, :old_column1, :new_column1
rename_column :table_name, :old_column2, :new_column2
...
を使用することができます。
change_table
を使うと、少しすっきりします。
class FixColumnNames < ActiveRecord::Migration
def change
change_table :table_name do |t|
t.rename :old_column1, :new_column1
t.rename :old_column2, :new_column2
...
end
end
end
そして、ただ
db:migrate
通常通り、またはどのような方法で業務を遂行するか。
Rails 4の場合。
を作成する際に
Migration
は、カラムの名前を変更するために、Rails 4では
change
メソッドの代わりに
up
と
down
で述べたとおりです。生成された
change
というメソッドがあります。
$ > rails g migration ChangeColumnName
というようなマイグレーションファイルが作成されます。
class ChangeColumnName < ActiveRecord::Migration
def change
rename_column :table_name, :old_column, :new_column
end
end
関連
-
[解決済み] Railsマイグレーションを利用してカラムをドロップする方法
-
[解決済み] Ruby on Railsのデータベースをパージまたは再作成する
-
[解決済み] Pandasのカラム名のリネーム
-
[解決済み] カラムの変更:NULLをNOT NULLに変更する
-
[解決済み] MySQLデータベースの名前を素早く変更する(スキーマ名を変更する)方法は?
-
[解決済み] Git のローカルブランチとリモートブランチの両方の名前を変更するにはどうすればよいですか?
-
[解決済み] カラム名の変更 SQL Server 2008
-
[解決済み] Rails DBの移行 - テーブルを削除するには?
-
[解決済み] Ruby on Railsのマイグレーションで、カラムをユニークにしてインデックスを作成するにはどうすればよいですか?
-
[解決済み] Ruby on RailsのActiveRecordのマイグレーションで、長すぎるインデックス名を処理するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】警告:定数 ::Fixnum は非推奨 新しいモデルを生成するとき
-
[解決済み】gemのインストールができない - gemネイティブ拡張の構築に失敗 - そのようなファイルをロードできない -- mkmf (LoadError)
-
[解決済み] pg gem をインストールしようとすると 'libpq-fe.h' ヘッダが見つからない
-
[解決済み] Ruby/Rails の「フック」とは何ですか?
-
[解決済み] heroku push rejected, failed to compile Ruby/rails app
-
[解決済み] Ruby on rails "No route matches" (ルートに一致するものがない)。
-
[解決済み] rspec 3 - クラスメソッドをスタブ化する
-
[解決済み] Errno::EACCESS: パーミッションが拒否された @ dir_s_mkdir
-
[解決済み] 属性を割り当てる場合、引数としてハッシュを渡す必要がある
-
[解決済み】RailsでActiveRecordモデルとそのテーブルの名前を変更するマイグレーションはどのように記述するのですか?