問題タブ [squeel]

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 に答える
282 参照

ruby - Where ブロックで OR を使用して配列を反復処理する Squeel

Squeel に次のクエリがあります。

これは問題なく機能しますが、言語の追加と削除を容易にするために、これらの値を使用して配列を反復処理する方法があるかどうかを考えていました。私が作成して配列したとしましょう:

Where ブロックで Squeel を反復処理する方法はありますか?

私は成功せずに考えることができるすべてを試しました。

ありがとう。

0 投票する
3 に答える
4205 参照

ruby-on-rails - Squeel を使用して、この Rails サブクエリをどのように実行しますか?

以下のクエリを Squeel を使用して再構築したいと思います。演算子を連鎖させて、クエリのさまざまな部分でロジックを再利用できるように、これを行いたいと思います。

クエリはすべて DB で動作する必要があり、何百万ものレコードを並べ替えてスライスする必要があるため、ハイブリッド Ruby ソリューションであってはなりません。

私は問題を設定して、通常のuserテーブルに対して実行するようにし、その代わりに別のテーブルでプレイできるようにしました。

回答可否の制限

  • Userクエリは、すべての通常の属性を持つオブジェクトを返す必要があります
  • extra_metric_we_care_about各ユーザー オブジェクトには、age_in_secondsおよびも含める必要があります。compound_computed_metric
  • クエリは、複数の場所で文字列を出力するだけでロジックを複製するべきではありません-同じことを2回行うことを避けたいです
  • [更新] 数百万のレコードで構成される可能性のある結果セットを DB で並べ替えてスライスしてから Rails に戻すことができるように、クエリはすべて DB で実行できる必要があります。
  • [更新] ソリューションは Postgres DB で機能するはずです

希望するソリューションの例

以下の解決策は機能しませんが、私が達成したいエレガンスのタイプを示しています

これを既存のデータベースに対して実行できるはずです

User既存のクラスを使用してコンソールで再生できるように、問題を多少工夫したことに注意してください。

編集

  1. 私が使用しているDBはPostgresです。
  2. クエリがすべて DB で実行されることを 100% 明確にしたかどうかはわかりません。ロジックの一部が基本的にRailsで行われている場合、ハイブリッドな答えになることはできません。計算列を使用して何百万ものレコードを並べ替えてスライスできるようにしたいので、これは重要です。
0 投票する
0 に答える
127 参照

ruby-on-rails - この SQL サブクエリは、Squeel/ActiveRecord を使用してどのように表現できますか?

今日は少し頭がぼやけていて、ActiveRecord/Squeel/ARel を使用してこの SQL クエリを正しく表現する方法がわかりません。

何か案は?

背景: DomainName モデルには、多様な所有者と、所有者がさまざまな種類のドメイン名を持つことを可能にする「キー」フィールドがあります。[owner_type, owner_id, key]上記のクエリは、一意のタプルごとに最新のドメイン名を取得します。

編集:

JOIN を使用した同じクエリを次に示します。

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

postgresql - 日付ごとにレコードを取得してカウントする

created_atフェッチするクエリを作成し、タイムゾーンの日付ですべてのレコードをカウントする必要があります。

created_attimestampPostgreSQL では UTCとして保存されますがmy_date、Rails のアプリケーション タイム ゾーンの日付です。

タイムゾーンの変換による損失なしに、どのように正しい方法で行うことができ、created_at最初に日付に変換する必要がありますか?

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

sql - ActiveRecord 使用 配列の配列をパラメータとして使用

次のクエリを作成したいと思います。

[id, zone_id]関数への入力は、次のようなネストされた配列になります。

[[87, 457], [88, 457]]

squeel gemのサイトで見かけたちょっとした裏技をやってみた

しかし、ネストされた配列を引数として取るのは好きではありません。

私が思いついたソリューションは、SQL 文字列をコンパイルするだけで、準備されたステートメントのパラメーター サニテーションを使用しません。

私はsqueelで答えが可能だと感じていますが、純粋なActiveRecordの答えがあれば、それも試してみます.

  • レール 3.2.13
  • ルビー 1.9.3-p392
0 投票する
5 に答える
579 参照

sql - 難しいクエリを最適化する (おそらく squeel を使用)

そのようなコードがあります(PublicActivity gem&Squeelを使用)

ただし、8 つの SQL 要求が作成されます。

  1. 活動リクエストは参加していません
  2. 一部のユーザー (投稿所有者とプロジェクト所有者) が 2 回読み込まれます
  3. 一部のプロジェクトは 2 回読み込まれます
  4. @activities は配列です。Rails のリレーション マージ メソッド ( を除く+) は、上記のコードでは機能しません。

それを最適化するためのアイデアはありますか?