[解決済み] Railsのマイグレーション。カラムのデフォルト設定を元に戻す
2022-04-14 07:40:20
質問
Railsのマイグレーションで、次の例のようにカラムのデフォルト設定を設定する問題があります。
def self.up
add_column :column_name, :bought_at, :datetime, :default => Time.now
end
もし、そのデフォルト設定を後のマイグレーションで落としたい場合、rails migrations を使ってどのようにすればいいでしょうか?
私の現在の回避策は、railsのマイグレーションで、以下のようなカスタムSQLコマンドを実行することです。
def self.up
execute 'alter table column_name alter bought_at drop default'
end
しかし、私はこの方法が好きではありません。なぜなら、基礎となるデータベースがこのコマンドをどのように解釈しているかに依存することになってしまうからです。データベースを変更した場合、このクエリはもう動作しないかもしれませんし、マイグレーションが壊れてしまうかもしれません。そこで、railsでカラムのデフォルト設定の取り消しを表現する方法はないでしょうか?
解決方法は?
Rails 5+
def change
change_column_default( :table_name, :column_name, from: nil, to: false )
end
Rails 3とRails 4
def up
change_column_default( :table_name, :column_name, nil )
end
def down
change_column_default( :table_name, :column_name, false )
end
関連
-
[解決済み】Rails: sudo "コマンドが認識されないのはなぜですか?
-
[解決済み] nil:NilClass の未定義メソッド `each'... なぜ?
-
[解決済み] Railsで `before_action` での `only:` はどのように機能するのですか?
-
[解決済み] ルビーオンレール モデルから明確な値を選択する
-
[解決済み] Ruby on Rails の新規セットアップ : "Expected string default value for '--rc'; got false (boolean)".
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] Rails DBの移行 - テーブルを削除するには?
-
[解決済み] Railsのscaffoldingを元に戻す
-
[解決済み】Rails 4で参照列のマイグレーションを追加する
-
[解決済み】RailsマイグレーションでNULL可能なカラムをNULL不可能に変更する方法は?
最新
-
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::ConnectionBad)
-
[解決済み] 新規ユーザー作成時に ActiveModel::ForbiddenAttributesError が発生する。
-
[解決済み] ウェブパッカーがアプリケーションを見つけ出せない
-
[解決済み] Ruby on rails "No route matches" (ルートに一致するものがない)。
-
[解決済み] RVMでRubyのデフォルトバージョンを設定するには?
-
[解決済み] Devise Admin Roleの追加【終了しました
-
[解決済み] Ruby on rails アプリで ES6 (ES2015) を使用するにはどうすればよいですか?
-
[解決済み] RSpecとCucumberの違いは何ですか?[クローズド]