問題タブ [active-relation]
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 - ActiveRelationはrailsのincludes()の機能にどのように影響しますか?
私はArelソースとRails3.0のアクティブレコードソースのいくつかを調べましたが、クエリを作成するときにArelがincludes()を使用する能力を変更するかどうかについて自分自身に良い答えを集めることができないようです、 良い方向へ。
返されるアソシエーションレコードについて、2.3.5以前のactiverecord:includeクエリの条件を変更したい場合があります。しかし、私が知る限り、これはすべての:includeクエリに対してプログラムで維持できるわけではありません。
(一部のAR-find-includes make t#{n} .c#{m}は、すべての属性の名前を変更します。これらのクエリに条件を追加して、結合されたセットの結果を制限することもできますが、他のAR-find-includesはn_joins+1番号を実行します。 IDセットに対するクエリの数が繰り返され、ARをハックしてこれらの繰り返されるクエリを編集する方法がわかりません。)
Arelでは、includes()を使用するときに、結果として関連付けられるモデルオブジェクトを指定するActiveRecordクエリを作成できますか?
元:
ruby-on-rails - (NULL) の NULL が正しく一致しません
Rails 3 のアクティブ リレーションを使用して、スコープを設定しました。
:email が NULL の場合、これには問題があります。実際には少なくとも 1 行を返す必要があるのに、ゼロ行を返します。つまり、duplicate_contact(contact).size == 0
false であるべきときに true になります。
これは、mysql ドキュメントの次のステートメントに関係していると思います。
これを正しい結果に戻すにはどうすればよいですか?
ruby-on-rails - rails 3.0.3-ActiveRecord :: Relationship、未定義のメソッドエラー
この原因不明のActiveRecord::Relationship、未定義のメソッドエラーが発生しています。モデルの関連付けが明確に定義されており、イベントテーブルにユーザーテーブルの外部キーがあるため、理由はわかりません。この修正を使用しようとしましたが、失敗しました:Rails 3 ActiveRecord::Relationランダムアソシエーションの動作
event.rb
user.rb
schema.rb
エラーメッセージ
activerecord - RailsのクエリからIDの配列を除外する方法(ActiveRecordを使用)?
特定の ID を持つレコードを除くすべてのレコードを返す ActiveRecord クエリを実行したいと考えています。除外したいIDは配列に格納されています。そう:
2行目を完成させる方法がわかりません。
背景:私がすでに試したこと:
バックグラウンドが必要かどうかはわかりませんが、既に .find と .where のさまざまな組み合わせを試しました。例えば:
これらは失敗します。 このヒントは正しい方向に進んでいるかもしれませんが、私はそれを適応させることに成功していません. どんな助けでも大歓迎です。
ruby-on-rails-3 - after_createを使用する
私はモデル、カテゴリーを持っています。そして、カテゴリが作成されるたびに、新しいデフォルトのsub_categoryを作成したいと思います。しかし、私はそれを行う方法がわかりません。これが私が持っているものです。
ruby-on-rails - Railsを熱心な負荷カウントにするにはどうすればよいですか?
これは、1年前の質問と変更に関連しています。
sqlite3が利用可能であれば、箱から出してすぐに機能するはずの質問の例を示します:https ://github.com/cairo140/rails-eager-loading-counts-demo
インストール手順(メインブランチ用)
私はリポジトリにもっと完全な記述を持っていますが、私の一般的な質問はこれです。
全体的なデータベースクエリを最小限に抑える方法で、Railsの負荷カウントを熱心に行うにはどうすればよいですか?
ActiveRelationにその関連付けを含めたにもかかわらず、関連付けでn+1
使用するたびに問題が発生します。回避策はを使用することですが、これは、呼び出されているオブジェクトがすでにロードされている場合にのみうまく機能します。もちろん、Railsの内部ですでに行われていることと重複していると思われます。また、使用に関する問題は、関連付けが最初にロードされておらず、カウントが必要なすべてである場合に、不幸なオーバーロードが発生することです。#count
#includes(:associated)
#length
#length
READMEから:
すでにロードされているposts配列(付録を参照)で#lengthを実行することでこの問題を回避できますが、カウントもすぐに利用できるようにしておくと便利です。一貫性が高いだけでなく、投稿をロードする必要がないアクセスパスを提供します。たとえば、何があってもカウントを表示するパーシャルがあるが、半分の時間、パーシャルは投稿がロードされた状態で呼び出され、半分の時間はロードされていない場合、次のシナリオに直面します。
- 使用する
#count
- 投稿がすでに読み込まれている場合のn
COUNT
スタイルのクエリCOUNT
投稿がまだロードされていない場合のnスタイルのクエリ- 使用する
#length
- 投稿がすでに読み込まれている場合、追加のクエリはゼロです
*
投稿がまだロードされていない場合のnスタイルのクエリこれらの2つの選択肢の間には、支配的な選択肢はありません。ただし、次のシナリオを実行できるように、#countを修正して#lengthに延期するか、バックグラウンドで保存されている他の方法で保存されている長さにアクセスすると便利です。
- 改訂版を使用
#count
- 投稿がすでに読み込まれている場合、追加のクエリはゼロです
COUNT
投稿がまだロードされていない場合のnスタイルのクエリ
では、ここでの正しいアプローチは何ですか?私が見落としているものはありますか(非常に、非常に可能性が高いです)?
ruby-on-rails-3 - アクティブ レコード クエリのドライイング
似たようなクエリが 2 つあるのですが、どうすれば DRY できますか? 両方のクエリ間で異なる条件は 1 つだけです。
ruby-on-rails-3 - Rails3 & ActiveRecord::Relation - Arel と OR
イベントと呼ばれるモデルで定義されたスコープがいくつかあります。ここで、OR 演算子を使用してそれらを結合する必要があります。私は Rails3 を使用していますが、ActiveRelation と Arel、およびこれをどのように使用するべきかについて少し混乱しています。
イベントを取得する方法
しようEvents.for_company(X).or(issues)
とすると、エラーが発生します
NoMethodError: #ActiveRecord::Relation の未定義のメソッド「or」
を使っEvents.for_company(Company.find(1)).arel.or(Events.issues)
て
NoMethodError: #Arel::SelectManager の未定義のメソッド「or」
問題である、またはユーザーが決定された会社の場所であるすべてのイベントを取得したい。
ありがとう。
ruby-on-rails-3 - User.where(:id => [1,2])。where(:id => 2).arel.to_sql予期しない結果
Railsコンソールから次のコマンドを実行すると、予期しない結果が発生します。
私はそれがであるとは思っていませんOR
。
この例はUser
、メソッドを定義するテーブルレスモデルの非常に単純化された例です。
データベースのどこCars
に保存されますか。その後、コントローラーで
(わかりました、これも単純化された例ですが、私が達成しようとしていることをはるかに表しています)
ruby-on-rails - Rails 3にmessage_id_equalsメソッドがないのはなぜですか?
このエラーが発生したようですが、特別なことは何もしていません。
なんで?コンテキストは次のとおりです。