[解決済み] Railsのマイグレーション:self.upとself.downの比較と変化
2023-03-22 02:01:16
質問
新しいrailsのバージョンでは、self.upとself.downのメソッドに対して"change"があるようですね。
では、マイグレーションをロールバックしなければならないときはどうなるのでしょうか?どのように実行すべきアクションを知ることができるのでしょうか?私はオンラインチュートリアルに基づき、次のメソッドを実装する必要があります。
class AddImageToUsers < ActiveRecord::Migration
def self.up
add_column :users, :image_file_name, :string
add_column :users, :image_content_type, :string
add_column :users, :image_file_size, :integer
add_column :users, :image_updated_at, :datetime
end
def self.down
remove_column :users, :image_file_name, :string
remove_column :users, :image_content_type, :string
remove_column :users, :image_file_size, :integer
remove_column :users, :image_updated_at, :datetime
end
end
新しい変更方法を使用して同じことを行うにはどうすればよいですか?
どのように解決するのですか?
多くの操作の場合
のレールは、逆演算が何であるかを推測することができます。
を(問題なく)推測することができます。例えば、あなたの場合、以下の逆演算は何でしょうか?
add_column
をロールバックするときに呼び出すにはどうしたらいいでしょうか。もちろん、それは
remove_column
. の逆は何でしょう?
create_table
? それは
drop_table
. ですから、このような場合、rails はロールバックする方法を知っていて、そのために
down
メソッドは不要です (ドキュメントでは
メソッドが現在サポートされており、changeメソッドから
).
しかし、注意してください。
を定義する必要があります。
down
メソッドを定義する必要があります。
例えば、10進数カラムの精度を変更した場合、ロールバック時に元の精度をどうやって推測するのでしょうか?それは不可能です。そこで、このメソッドに
down
メソッドを定義する必要があります。
を読むことをお勧めします。 Railsマイグレーションガイド .
関連
-
[解決済み] 変更欄のRailsマイグレーション
-
[解決済み] Paramが無いか、値が空である。ParameterMissing in ResultsController#update
-
[解決済み] Railsマイグレーションを利用してカラムをドロップする方法
-
[解決済み] nil:NilClass の未定義メソッド `each' - しかし、なぜ?
-
[解決済み] RVMでRubyのデフォルトバージョンを設定するには?
-
[解決済み] rspecにおけるassignsの意味
-
[解決済み] Rails / Haml: 投稿フォームを作成するには?
-
[解決済み] rails consoleを起動するとRailsのイニシャライザーが呼ばれる?
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】なぜRuby on Railsは、http://localhost:3000 の代わりに http://0.0.0.0:3000 を使用するのですか?
-
[解決済み】OS X Yosemite 10.10.5 で [Ruby on Rails] 5 をインストールすると extconf が失敗して終了コード 1 エラーになる。
-
[解決済み] Rails のインストールに失敗する: activesupport には Ruby のバージョン >= 2.2.2 が必要です。
-
[解決済み] Ruby on rails "No route matches" (ルートに一致するものがない)。
-
[解決済み] 検索 vs 発見する by vs どこに
-
[解決済み] nil:NilClass の未定義メソッド `each' - しかし、なぜ?
-
[解決済み] RoRにおけるSpringサーバーの機能とは?
-
[解決済み] Railsコントローラからホスト名を取得する
-
[解決済み] ルビーオンレール モデルから明確な値を選択する
-
[解決済み] 属性を割り当てる場合、引数としてハッシュを渡す必要がある