[解決済み] Railsのマイグレーション。存在確認と継続?
2023-05-06 03:44:39
質問
マイグレーションでこのようなことをやっていました。
add_column :statuses, :hold_reason, :string rescue puts "column already added"
が、判明しました。 これは SQLite では動作しますが、PostgreSQL では動作しません。 . add_columnが吹っ飛べばいいみたいなんだけど。 例外が捕捉されても をキャッチしたとしても、トランザクションは停止しているので、マイグレーションは追加の作業をすることができません。
何か DB に特化しない カラムやテーブルがすでに存在するかどうかを確認する方法はありますか?それに失敗した場合、私の救助ブロックを本当に動作させる方法はあるのでしょうか?
どのように解決するのですか?
Rails 3.0以降のバージョンでは、Rails上で
column_exists?
を使ってカラムが存在するかどうかをチェックすることができます。
unless column_exists? :statuses, :hold_reason
add_column :statuses, :hold_reason, :string
end
また
table_exists?
という関数もあり、これはRails 2.1にまでさかのぼります。
関連
-
[解決済み] heroku push rejected, failed to compile Ruby/rails app
-
[解決済み] Paramが無いか、値が空である。ParameterMissing in ResultsController#update
-
[解決済み] Rails ExecJS::ProgramError in Pages#home?
-
[解決済み] railsでhidden fieldタグを使用する方法
-
[解決済み] Ruby/RailsでHashからキーを削除して残りのHashを取得する方法は?
-
[解決済み】railsの文字列とtextの違い?
-
[解決済み】RailsでActiveRecordモデルとそのテーブルの名前を変更するマイグレーションはどのように記述するのですか?
-
[解決済み】Rails: パスヘルパーの出力をコンソールから確認する
-
[解決済み] Rails 3 のマイグレーション。参照列を追加する?
-
[解決済み] Railsのマイグレーション:self.upとself.downの比較と変化
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】TypeError: SymbolからIntegerへの暗黙の変換がない。
-
[解決済み】コントローラでJSONをレンダリングする
-
[解決済み】ActionController::InvalidAuthenticityTokenについて
-
[解決済み] デバイスを使用する現在のユーザーメソッド
-
[解決済み] heroku push rejected, failed to compile Ruby/rails app
-
[解決済み] PG::ConnectionBad - サーバーに接続できませんでした。接続が拒否されました。
-
[解決済み] Paramが無いか、値が空である。ParameterMissing in ResultsController#update
-
[解決済み] Devise Admin Roleの追加【終了しました
-
[解決済み] Rspec が私のモデルクラスを認識しない。初期化されていない定数エラー
-
[解決済み] Ruby on rails アプリで ES6 (ES2015) を使用するにはどうすればよいですか?