問題タブ [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.

0 投票する
2 に答える
2920 参照

ruby-on-rails - 既存のデータベースでの Rails 移行

新しい Rails 3.1 アプリケーションを作成しています。この新しいアプリケーションで既存のデータベース (以前の Rails 2 アプリケーションで作成されたもの) を再利用したいと考えています。

データベース内の既存のデータの一部を再利用するモデルを定義する新しいアプリケーションを作成しました。

開発およびテスト段階では、クリーン シート データベースで実行されるため、すべて正常に動作しますが、運用環境にデプロイしようとすると、次のようなメッセージが表示されます。

しかし、私は私の移行で次のように考えています

db:migrate に既存のものを無視させ、新しいものや新しいタイプのみを変更させるにはどうすればよいですか?

stackoverflow で同様の質問を見ましたが、この質問に答えている人はいません。回答ありがとうございます。

0 投票する
4 に答える
5731 参照

ruby-on-rails - Rails で移行をクリーンアップする良い方法は何ですか?

だから私はこのWebアプリに1年間取り組んできました.1つの移行にスキーマをコンパイルしたいと思います.

検索検索が速くなります。

私のconfig/dbは4000pxの長さではありません。

0 投票する
1 に答える
2872 参照

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」を使用します) が、問題を解決する方法を想像することはできません (今では、移行ファイルのコードをコピーして確認するだけです)。やるべきことをすること)。

フランチェスコ

0 投票する
5 に答える
5665 参照

ruby-on-rails - Rails: 失敗した移行をロールバックする方法

私はばかです... Railsでの移行を台無しにしました:

移行がモデルジェネレーターのように機能すると考えて( を使用references:modelname)、次のことを行いました。

移行を作成した

そして今、私の開発データベース ( SQLite3 ) には、テーブルreferencesに type の列があります。eventphotos

私のschema.rbには、真ん中に次のような行があります。

rake db:rollbackこれに対して無力です:

では、開発データをデータベースにロールバックして維持するにはどうすればよいでしょうか? それが私の唯一の選択肢である場合は、写真テーブルをゴミ箱に捨てることさえできます..しかし、すべてを再構築する必要はありません. 何をすべきか?


ところで、これを読んで同じ愚かな間違いを犯そうとしている人のために...しないでください!正しい移行ジェネレーターを使用します。

0 投票する
2 に答える
5099 参照

ruby-on-rails - Rails 3、外部キーでマイグレーションを生成

外部キーを使用して移行を実行または生成するにはどうすればよいですか? 私はmunicipiosテーブルを持っており、テーブルに関連付けたいと思っていますciudades。テーブルには次のフィールドがあります: nombre_id(name id)、nombre(name)、departamento(department) この場合、scaffold スクリプトを実行して外部キーの移行を生成するにはどうすればよいですか?

0 投票する
4 に答える
104 参照

ruby-on-rails - 移行を実行する前に移行をテストする簡単な方法はありますか?

つまり、問題の移行を実行する前に、 self.downが実際にself.up をロールバックすることを確認するための最良の方法を知りたいのです。

移行をロールバックする必要があるが、 self.downが目的を果たさない場合は、どうすればよいですか?

破壊的な可能性のある移行を処理する場合のベストプラクティスはどれですか?データベースのバックアップだけですか?

ありがとう、ドゥッチョ。

0 投票する
1 に答える
2017 参照

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 assetsRailsがそのドロップコマンドをどこから取得しているのかを確認することもしましたが、何も見つかりませんでした。

だから私の質問は、この移行を再実行するにはどうすればよいですか?そして、私はrailsがそのドロップコマンドをどこで取得しているのか知りたいですか?

更新down:rails 3.1は、ロールバック時に実際には移行クラスのメソッドを参照しないことが判明しましたメソッドの移行コマンドを調べて、changeそれらを逆にします。そのため命令rake db:rollbackを削除した後でもアセットテーブルを削除しようとしていましたdrop_table :assetsこれを修正したchangeメソッドを古いrails3.0スタイルupメソッドに変更したことです。次に、railsはコマンドをdown削除したメソッドをdrop_table

0 投票する
1 に答える
1367 参照

ruby-on-rails - rake db:migrate の問題

初め

バイヤーモデルを生成した後、私はやった

それはうまくいきました。

1日後、以下のコマンドを実行しました

売り手モデルを生成した後、私はやった

Buyer テーブルが既に存在するというエラーが表示されました。なぜ?異なるタイムスタンプ ファイルがあります。

そしてもう一つは

Rails 2.3.11 と rake 0.8.7 を使用しました

0 投票する
1 に答える
109 参照

ruby-on-rails - Rails 3.0 の学習 - 移行のヘルプ - 所属先

私はフォトギャラリーアプリに取り組んでいます。写真には Album への属している関係があります (Album has_many realtionship to Photo) この関係をデータベースに正しく追加する移行を作成するにはどうすればよいですか? 私は試しました-レールはadd_album_to_photoを生成しますが、それは空の移行として行われます。正しい方向へのプッシュを使用できます。

0 投票する
1 に答える
4729 参照

ruby-on-rails-3 - postgresで外部キーとデータベース制約を使用したhas_manyとbeels_toの移行?

移行に関するいくつかの質問とその回答を検索しましたが、満足のいく解決策が見つかりませんでした。

次のような単純な has_many および belongs_to 関係を使用したい

次のような移行内でデータベースレベルの制約を作成する可能性はありますか?

または、これを手動で行う必要がありますか?せいぜい、データベースに依存しないソリューションを好むでしょう。前もって感謝します!

編集:私は現在 Postgresql を使用していますが、基盤となるデータベースに関しては柔軟に対応したいと考えています。

更新:データベースに依存しないコードのために、現時点では次の移行に固執します。

私はまだよりエレガントな解決策を見つけたいと思っています。多分それのための宝石があります。