問題タブ [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 投票する
1 に答える
514 参照

ruby-on-rails - Squeel を使用して同じアソシエーションで複数の結合を実行する

私のアプリケーションでは、ワークフローとステップをモデル化する必要があります。ステップbelongs_toワークフローとワークフローhas_manyステップ。ステップには、インデックスとブール値のステータス (「完了」) があります。ステップ 1 が完了し、ステップ 2 が完了していないワークフローを取得したい。つまり、SQL では次のようになります。

このクエリを Squeel で表現しようとしましたが、同じ関連付けで複数の結合を許可していないようです: 結合に名前を付ける方法が見つかりませんWorkflow.joins{steps}.joins{steps}

どうすればそれを達成できるのでしょうか?

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

ruby-on-rails - Railsのwhere句がブール条件で結果を返さないのはなぜですか?

私は次のスクイールクエリを持っています:

それは次と同じです:

そして実行します:

ただし、このクエリは請求書をまったく返しません。sqlite プログラム ether からクエリを実行しようとしても機能しません。そのクエリが間違っているようです。't' と 'f' の両方を値として持つ請求書が sqlite db にあることは間違いありません。これを正しくする方法は?

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

sql - `where`メソッド/句で`scope`メソッドに関連するSQL句を「追加」することは可能ですか?

Ruby on Rails 3.2.2 を使用しており、Squeel gem を試しています。(何らかの方法で、Squeel gem を使用するかどうかによって)scopeメソッドに関連する SQL 句を句に「直接」 「追加」できるかどうかを知りたいですwhere。つまり、私は持っています:

したがって、実行するArticle.scope_method_name(@current_user).to_sqlと、次のようなものが返されます。

私はシフターを試しましたが、それらは (少なくとも私にとっては) 他の Squeel ステートメントでのみ使用されることを意図してますつまり、sifter を記述した場合、それを使用してActiveRecords をスコープすることはできません。その sifterSqueel::Nodes::PredicateActiveRecord::Relation.

0 投票する
0 に答える
57 参照

ruby-on-rails - 関連制約に基づくエンティティの検索

多くのログインを持つモデル(ユーザーなど)があります。

特定のログインを持つユーザーを見つけることは可能でしょうか (プロバイダー == facebook など)。

私はそれが以下を使用して実行できることを知っています:

しかし、結果のユーザーエンティティオブジェクトは読み取り専用です... where{} の結果に対してreadonly(true)を呼び出すことで書き込み可能にできることはわかっていますが、どういうわけかそれは間違っていると感じています。

明示的なログインなしでこれを行う方法はありませんか?

(そこでsqueel構文を使用)

0 投票する
0 に答える
881 参照

ruby-on-rails - Squeel でのサブクエリの結合

モデルテーブルの1つ(マスター)を多対多の関係(rel1、rel2、...)に結合し、関連するモデルの数を集計して、ある種のピボットテーブルを作成しようとしています。次のような SQL が生成されることを期待しています。

Squeel を使用して内部クエリを簡単に作成できます。

しかし今、これらの、まあ、列サブクエリを要約テーブルにうまく組み合わせる方法がわかりません。私が得た最も近いものは、サブクエリをSQLに変換し、次のように処理することです:

同じものを得るより良い方法はありますか?

UPD : この場合、カウンター キャッシュ アプローチを使用することをお勧めします。

http://railscasts.com/episodes/23-counter-cache-column

しかし、質問はまだ有効です: サブクエリの結合を squeel で行うスムーズで自然な方法はありますか?

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

join - Squeelの条件でサブクエリを結合する方法

プロローグ

私はSqueelを採用しました–そしてすべてのステップを楽しんでいます!アーニーミラー、共有していただきありがとうございます!

私はruby1.9.2とSqueel1.0.2とRails3.2.5で開発しています

(質問を完全に再構成したことを告白します-読みやすさを向上させ、答えを得る可能性を高めることを望んでいます)<:)

使用事例

(スーパー)ユーザーがこのような承認と権限を割り当てることができるようにしたいと思います

  • user_groupは複数の権限を持つことができる必要があります
  • 承認は複数の権限を持つことができる必要があります
  • 権限は、データへのアクセス(操作)を制御できる必要があります
    • コントローラ経由(リクエストパス)
    • クラスのインスタンスで
    • 特定のインスタンスで

ACLシステムは怠惰である必要があります。つまり、役割/承認が与えられていない場合、ユーザーは明らかにACLにまったく関心がありません。

移行

ユースケースから役割と(多形の)役割のあるエンティティを特定したので、

普通ではない役割

ともう少し説明的なRoleable

クラス

システムには、ActiveRecord:Baseから継承し、すべてのクラスから継承するジェネリッククラス(AbstractActionBase)があります(システム全体の属性とメソッドを1か所に追加できます)

つまり、部分的には、AbstractActionBaseは次のようになります。

Roleクラスの一部は次のようになります

Roleableクラスは次のようになります

論理

作成

これにより、承認(誰か/何かに役割を割り当てる)が可能になります。この場合、承認文字列はnilです。

user_group salesには 、Roleable.create({role:@sales、roleable:@user_group})を使用してロールsalesが割り当てられます。

同時に、私は許可を行うことができます-任意の役割の詳細を説明します-のように

役割salesには、OrderHeadテーブルとOrderDetailテーブルに対するインデックス作成編集、および削除の権限があります。

  • Roleable.create({role:@sales、authorization: "index、create、edit、delete"、roleable:@user_group、controller: "order_heads"})
  • Roleable.create({role:@sales、authorization: "index、create、edit、delete"、roleable:@user_group、controller: "order_details"})

これらの「詳細」は、次のようにエーテル的である可能性があります

Roleable.create({role:@sales、authorization: "index"})

ややリアル

Roleable.create({role:@sales、authorization: "index"、roleable_type:'OrderHead'})

または非常に表現された

Roleable.create({role:@sales、authorization: "index"、roleable:OrderHead.first})

選択

ほとんどすべてのコントローラーは、インデックス(およびその他のアクション)が定義されているAbstractActionsControllerから継承します。このように、そのコントローラーは、AttachedResources:Baseから自己継承します。

チャレンジ

短い質問を提示するのはなんと長い話でしょう<:)

with_authorizationsActiveRelationを返すメソッドを作成するにはどうすればよいですか(できればSqueelを使用して)

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

sql - スコープメソッドを使用して SQL `OR` 句を生成することは可能ですか?

Ruby on Rails 3.2.2 と Squeel gem を使用しています。OR複数のスコープ メソッドを使用して、それらのスコープ メソッドの SQL 条件に関連する句を含むSQL クエリを生成する方法があるかどうかを知りたいです。つまり、私は持っています:

スコープ メソッドを使用してSQLOR句を生成することは可能ですか (Squeel gem を使用するかどうかによって)?

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

ruby-on-rails - Rails HABTM協会

自己参照関連付けがhabtmあります。

しかし、クエリを作成するとき(を使用squeel):

スキーマ:

エラーが発生しました:

どこを間違えた?ありがとう。

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

ruby-on-rails - SqueelとArelの違いは?

レール初心者のための2つの非常によく似た宝石「Arel」と「Squeel」の違いを誰かが説明できますか?

https://github.com/rails/arel Vs https://github.com/ernie/squeel

SQLクエリの作成に使用できる特定のUIブロックがユーザーに提供される単純なクエリビルダーを構築することを楽しみにしています。2つのうちどちらの宝石がより適切であり、その理由は何ですか?

同様の質問: RailsのSQLクエリビルダー

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

ruby-on-rails - 結合のキーパスとして文字列を評価する Squeel

これが私が本当にやりたいことです:

squeel keypathを表す文字列を用意します。この文字列を結合ステートメントに送信したいと思います。

しかし、ここに私がエラーとして得るものがあります:

私はもう試した:

しかし、それはうまくいきません...何が欠けていますか?

github ページにこれに関するドキュメントはありません: https://github.com/ernie/squeel/

助けてくれてありがとう!


更新: これをやってのける本当に紛らわしい方法を見つけました:

これは出力されます:

これは、joins squeel 関数に渡すことができます。ネストされたシンボルを構築するよりも良い方法があるに違いないと確信しています:(