問題タブ [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 に答える
1479 参照

ruby-on-rails - 移行中にデータベースにデータを挿入できませんか?

Rails3を使用しています。移行内でデータベーステーブルにデータを挿入できないように見えるのがRailsのルールかどうかはわかりません。誰かがそれを確認できればそうです。

私は次のことを試しました:

私は2つのActiveRecordモデルを持っています:

移行ファイルを生成しました。移行の中には次のものがあります。

default_carをデータベースに保存しようとすると、falseになり、default_userのcar_idがnullなります

移行時にデータベースにデータを保存できないためですか?

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

ruby-on-rails - ActiveRecord::Relation オブジェクトを取得したのはなぜですか?

データベースから車のインスタンスを取得しようとしましたが、

次のエラー メッセージが表示されました: ActiveRecord::Relation:0xb6837b54 の未定義のメソッド `user_name'

CarオブジェクトではなくActiveRecord::Relationオブジェクトを取得したのはなぜですか?? 原因は何ですか?ちなみに、移行ファイル内で車にクエリを実行しました。Rails3を使用しています。

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

ruby-on-rails - Rails 3で新しい移行を作成する方法

Rails 3で新しい移行を作成するにはどうすればよいですか?

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

ruby-on-rails - 参照を多態的にするための移行を生成する方法

Productsテーブルがあり、列を追加したい:

私はこれを行うことで移行を生成しようとしていました:

しかし、私は明らかにそれを間違っています。誰か提案できますか?ありがとう

移行を生成した後に手動で挿入しようとすると、次のようになりました。

そしてそれはまだ機能していません

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

sql - Rails:固定長のchar(12)列を作成するための移行

Railsの移行を通じて固定長SQL列(たとえばCHAR(12))を定義する最良の方法は何ですか?

これがモデルで処理されるべきではない理由は、char()とvarchar()のパフォーマンスのためであり、データベースに生のSQLを挿入することは避けたいと思います。

編集:私は:limit修飾子を知っていますが、フィールドはまだvarchar(パフォーマンスに悪い)であり、最小サイズを許可していません。

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

ruby-on-rails - Rails rake db:migrate は効果がありません

今日、新しい Rails 3 アプリを作成し、簡単な移行を追加しましたが、何らかの理由で、rake db:migrate を実行しても何も起こりません。数秒間一時停止してから、コマンド プロンプトに戻りますが、エラーなどは発生しません。Schema.rb とデータベースは空のままです。

何が起こっているのでしょうか?私は多くのアプリを作成しましたが、この問題は一度もありませんでした。すべてが完全に標準的なセットアップです。

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

ruby - 参照の追加と削除を伴うRailsの移行

で移行ファイルを作成した後、次のrails generate migration AddClientToUserように移行ファイルを編集できます。

これは、移行で追加された参照列を元に戻す正しい方法ですか?

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

ruby-on-rails - Railsの移行はschema.rbとは別にコミットする必要がありますか?

Railsデータベースの移行を生成/書き込み/実行した後、移行ファイルとdb/schema.rbバージョン管理を個別にコミットする必要がありますか?

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

rails-migrations - db:rollback が失敗する原因は何ですか?

Rails3データベース(postgresql)をいくつかの変更を加えるためにいくつかの手順でロールバックしようとしています。

今日、移行ファイルを追加しました。rake db:rollback が正常にロールバックされました。

さらに遡ろうとしていますが、 rake db:rollback が機能していないようです。

トレースを使用して db:rollback を実行すると、

ただし、作成が元に戻された、またはテーブルが削除されたという兆候はありません。

これについて多くの情報を見つけることができないようですので、疑問に思っています - db:rollback が失敗する原因は何ですか?

他の誰かがこれに遭遇しましたか?

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

ruby-on-rails - 長期にわたる移行 / find_each

Rails 3 を PostgreSQL で実行すると、

何百万もの小さなレコードを更新して移行しました。

ActiveRecord はそのような更新をトランザクションでラップしていると思うので、上記の例ではすべてのレコードが画面に「印刷」されていますが、「コミット」時間は非常に長く、消費されるメモリは膨大です。

では、この find_each をトランザクションの外で実行することはできますか (非常に安全ですが)、多くの「コミット」時間とメモリを節約できますか?

一種のActiveRecord::Base.without_transaction do ... ; 終わりだと思います:-)

または : 私は間違っています。移行はトランザクションにラップされておらず、表示されるのは SQL 更新ステートメントが適用されているだけですか?

編集: トランザクションとのリンクがないようです。移行を中断して取得したスタック トレースは次のとおりです。すべてが画面に印刷され、RAM が 500MB の空き容量から 30MB まで減少しています。

編集(2):うわー。find_each は反復後にすべての要素を返すため、非常に長いことが判明しました。

私は試した :

そのため、予想どおりすぐにコンソールが返されました。:)

しかし、それでも奇妙な動作が見られます。RAM が解放されません。代わりに、用語を終了すると、RAMはまだ急落しています...

たぶん、タップを使用した私のソリューションは満足のいくものではありませんか? まだ大量選択ですか?find_each の後に一括選択を回避するにはどうすればよいですか?

ありがとう!