問題タブ [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.
ruby-on-rails - Squeel を使用して同じアソシエーションで複数の結合を実行する
私のアプリケーションでは、ワークフローとステップをモデル化する必要があります。ステップbelongs_to
ワークフローとワークフローhas_many
ステップ。ステップには、インデックスとブール値のステータス (「完了」) があります。ステップ 1 が完了し、ステップ 2 が完了していないワークフローを取得したい。つまり、SQL では次のようになります。
このクエリを Squeel で表現しようとしましたが、同じ関連付けで複数の結合を許可していないようです: 結合に名前を付ける方法が見つかりませんWorkflow.joins{steps}.joins{steps}
。
どうすればそれを達成できるのでしょうか?
ruby-on-rails - Railsのwhere句がブール条件で結果を返さないのはなぜですか?
私は次のスクイールクエリを持っています:
それは次と同じです:
そして実行します:
ただし、このクエリは請求書をまったく返しません。sqlite プログラム ether からクエリを実行しようとしても機能しません。そのクエリが間違っているようです。't' と 'f' の両方を値として持つ請求書が sqlite db にあることは間違いありません。これを正しくする方法は?
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 を記述した場合、それを使用してActiveRecord
s をスコープすることはできません。その sifterSqueel::Nodes::Predicate
はActiveRecord::Relation
.
ruby-on-rails - 関連制約に基づくエンティティの検索
多くのログインを持つモデル(ユーザーなど)があります。
特定のログインを持つユーザーを見つけることは可能でしょうか (プロバイダー == facebook など)。
私はそれが以下を使用して実行できることを知っています:
しかし、結果のユーザーエンティティオブジェクトは読み取り専用です... where{} の結果に対してreadonly(true)を呼び出すことで書き込み可能にできることはわかっていますが、どういうわけかそれは間違っていると感じています。
明示的なログインなしでこれを行う方法はありませんか?
(そこでsqueel構文を使用)
ruby-on-rails - Squeel でのサブクエリの結合
モデルテーブルの1つ(マスター)を多対多の関係(rel1、rel2、...)に結合し、関連するモデルの数を集計して、ある種のピボットテーブルを作成しようとしています。次のような SQL が生成されることを期待しています。
Squeel を使用して内部クエリを簡単に作成できます。
しかし今、これらの、まあ、列サブクエリを要約テーブルにうまく組み合わせる方法がわかりません。私が得た最も近いものは、サブクエリをSQLに変換し、次のように処理することです:
同じものを得るより良い方法はありますか?
UPD : この場合、カウンター キャッシュ アプローチを使用することをお勧めします。
http://railscasts.com/episodes/23-counter-cache-column
しかし、質問はまだ有効です: サブクエリの結合を squeel で行うスムーズで自然な方法はありますか?
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_authorizations
ActiveRelationを返すメソッドを作成するにはどうすればよいですか(できればSqueelを使用して)
sql - スコープメソッドを使用して SQL `OR` 句を生成することは可能ですか?
Ruby on Rails 3.2.2 と Squeel gem を使用しています。OR
複数のスコープ メソッドを使用して、それらのスコープ メソッドの SQL 条件に関連する句を含むSQL クエリを生成する方法があるかどうかを知りたいです。つまり、私は持っています:
スコープ メソッドを使用してSQLOR
句を生成することは可能ですか (Squeel gem を使用するかどうかによって)?
ruby-on-rails - Rails HABTM協会
自己参照関連付けがhabtm
あります。
しかし、クエリを作成するとき(を使用squeel
):
スキーマ:
エラーが発生しました:
どこを間違えた?ありがとう。
ruby-on-rails - SqueelとArelの違いは?
レール初心者のための2つの非常によく似た宝石「Arel」と「Squeel」の違いを誰かが説明できますか?
https://github.com/rails/arel Vs https://github.com/ernie/squeel
SQLクエリの作成に使用できる特定のUIブロックがユーザーに提供される単純なクエリビルダーを構築することを楽しみにしています。2つのうちどちらの宝石がより適切であり、その理由は何ですか?
同様の質問: RailsのSQLクエリビルダー
ruby-on-rails - 結合のキーパスとして文字列を評価する Squeel
これが私が本当にやりたいことです:
squeel keypathを表す文字列を用意します。この文字列を結合ステートメントに送信したいと思います。
しかし、ここに私がエラーとして得るものがあります:
私はもう試した:
しかし、それはうまくいきません...何が欠けていますか?
github ページにこれに関するドキュメントはありません: https://github.com/ernie/squeel/
助けてくれてありがとう!
更新:
これをやってのける本当に紛らわしい方法を見つけました:
これは出力されます:
これは、joins squeel 関数に渡すことができます。ネストされたシンボルを構築するよりも良い方法があるに違いないと確信しています:(