問題タブ [rails-migrations]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 既存のデータベースでの Rails 移行
新しい Rails 3.1 アプリケーションを作成しています。この新しいアプリケーションで既存のデータベース (以前の Rails 2 アプリケーションで作成されたもの) を再利用したいと考えています。
データベース内の既存のデータの一部を再利用するモデルを定義する新しいアプリケーションを作成しました。
開発およびテスト段階では、クリーン シート データベースで実行されるため、すべて正常に動作しますが、運用環境にデプロイしようとすると、次のようなメッセージが表示されます。
しかし、私は私の移行で次のように考えています
db:migrate に既存のものを無視させ、新しいものや新しいタイプのみを変更させるにはどうすればよいですか?
stackoverflow で同様の質問を見ましたが、この質問に答えている人はいません。回答ありがとうございます。
ruby-on-rails - Rails で移行をクリーンアップする良い方法は何ですか?
だから私はこのWebアプリに1年間取り組んできました.1つの移行にスキーマをコンパイルしたいと思います.
検索検索が速くなります。
私のconfig/dbは4000pxの長さではありません。
ruby-on-rails-3 - Rails 3 移行でのカスタム ヘルパー メソッドへのアクセス
Rails 2 では、db に外部キーを設定および削除するためのメソッドを含む lib/migration_helpers.rb ファイルがありました。これらのメソッドは、移行ファイルに追加することにより、移行ファイルの self.up および self.down で使用できました。
上部に、そして
クラスステートメントの直後。
Rails 3 ではこれが機能せず、migration_helpers.rb の set_foreign_key メソッドを使用して移行を実行しようとすると、次のエラーがスローされます。
config/application.rb で自動ロード パスが lib を含むように設定されていることを確認しました。このファイルは実質的に必須です。なぜなら、require ステートメントをコメント アウトすると、Rails が 'migration_helpers' ファイルの欠落について泣き言を言うからです。
これはスコーピングの問題であると思われます (Rails 2 は「def self.up」を使用し、Rails 3 は「def change」を使用します) が、問題を解決する方法を想像することはできません (今では、移行ファイルのコードをコピーして確認するだけです)。やるべきことをすること)。
フランチェスコ
ruby-on-rails - Rails: 失敗した移行をロールバックする方法
私はばかです... Railsでの移行を台無しにしました:
移行がモデルジェネレーターのように機能すると考えて( を使用references:modelname
)、次のことを行いました。
移行を作成した
そして今、私の開発データベース ( SQLite3 ) には、テーブルreferences
に type の列があります。event
photos
私のschema.rbには、真ん中に次のような行があります。
rake db:rollback
これに対して無力です:
では、開発データをデータベースにロールバックして維持するにはどうすればよいでしょうか? それが私の唯一の選択肢である場合は、写真テーブルをゴミ箱に捨てることさえできます..しかし、すべてを再構築する必要はありません. 何をすべきか?
ところで、これを読んで同じ愚かな間違いを犯そうとしている人のために...しないでください!正しい移行ジェネレーターを使用します。
ruby-on-rails - Rails 3、外部キーでマイグレーションを生成
外部キーを使用して移行を実行または生成するにはどうすればよいですか? 私はmunicipios
テーブルを持っており、テーブルに関連付けたいと思っていますciudades
。テーブルには次のフィールドがあります: nombre_id
(name id)、nombre
(name)、departamento
(department) この場合、scaffold スクリプトを実行して外部キーの移行を生成するにはどうすればよいですか?
ruby-on-rails - 移行を実行する前に移行をテストする簡単な方法はありますか?
つまり、問題の移行を実行する前に、 self.downが実際にself.up をロールバックすることを確認するための最良の方法を知りたいのです。
移行をロールバックする必要があるが、 self.downが目的を果たさない場合は、どうすればよいですか?
破壊的な可能性のある移行を処理する場合のベストプラクティスはどれですか?データベースのバックアップだけですか?
ありがとう、ドゥッチョ。
ruby-on-rails - Railsの移行でロールバックに失敗しました
Railsの移行の編集を間違えました(Rails 3.1.0rc5を使用しています)。rake db:rollback
だから私はそれを修正し、続いて。を実行しようとしましたrake db:migrate db:test:prepare
。しかし、何らかの理由でロールバックが失敗しました。移行のロールバック部分は次のとおりです。
これはからの応答ですdb:rollback
:
そのため、データベース内のアセットテーブルを手動で削除し(sqlite3 dbsを使用しているだけです)、行をコメントアウトして再度drop_table :assets
実行しました。db:rollback
なぜアセットテーブルを削除しようとしているのですか?drop_table :assets
移行からその行をコメントアウトしました(実際には後で削除しました) 。grep -r assets
Railsがそのドロップコマンドをどこから取得しているのかを確認することもしましたが、何も見つかりませんでした。
だから私の質問は、この移行を再実行するにはどうすればよいですか?そして、私はrailsがそのドロップコマンドをどこで取得しているのか知りたいですか?
更新down
:rails 3.1は、ロールバック時に実際には移行クラスのメソッドを参照しないことが判明しましたメソッドの移行コマンドを調べて、change
それらを逆にします。そのため命令rake db:rollback
を削除した後でもアセットテーブルを削除しようとしていましたdrop_table :assets
これを修正したchange
メソッドを古いrails3.0スタイルup
メソッドに変更したことです。次に、railsはコマンドをdown
削除したメソッドをdrop_table
ruby-on-rails - rake db:migrate の問題
初め
バイヤーモデルを生成した後、私はやった
それはうまくいきました。
1日後、以下のコマンドを実行しました
売り手モデルを生成した後、私はやった
Buyer テーブルが既に存在するというエラーが表示されました。なぜ?異なるタイムスタンプ ファイルがあります。
そしてもう一つは
Rails 2.3.11 と rake 0.8.7 を使用しました
ruby-on-rails - Rails 3.0 の学習 - 移行のヘルプ - 所属先
私はフォトギャラリーアプリに取り組んでいます。写真には Album への属している関係があります (Album has_many realtionship to Photo) この関係をデータベースに正しく追加する移行を作成するにはどうすればよいですか? 私は試しました-レールはadd_album_to_photoを生成しますが、それは空の移行として行われます。正しい方向へのプッシュを使用できます。
ruby-on-rails-3 - postgresで外部キーとデータベース制約を使用したhas_manyとbeels_toの移行?
移行に関するいくつかの質問とその回答を検索しましたが、満足のいく解決策が見つかりませんでした。
次のような単純な has_many および belongs_to 関係を使用したい
次のような移行内でデータベースレベルの制約を作成する可能性はありますか?
または、これを手動で行う必要がありますか?せいぜい、データベースに依存しないソリューションを好むでしょう。前もって感謝します!
編集:私は現在 Postgresql を使用していますが、基盤となるデータベースに関しては柔軟に対応したいと考えています。
更新:データベースに依存しないコードのために、現時点では次の移行に固執します。
私はまだよりエレガントな解決策を見つけたいと思っています。多分それのための宝石があります。