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

ruby-on-rails - Rails ActiveRecord::StatementInvalid: PG::Error: エラー: テーブルの FROM 句のエントリがありません

ユーザーの選択に応じて、さまざまなスコープで構築している複雑な ActiveRecord クエリがあります。私は 2 つの gem を使用していますが、これは一緒に問題があるように見えますが、どちらが犯人であるかを見つけることができません。 5) Arel または Active Record 自体

これが私のクラス定義です:

そして最後に、私のクエリ:

*これは ActiveRecord::Relation オブジェクトであり、to_a で呼び出すとクラッシュします

これにより、次のエラーが表示されます。

  • Active Record と ARel は完全な SQL ステートメントを実装する責任がありますか?
  • to_sql で同じ結果が得られないのはなぜですか?
  • (完全な OUTER JOIN 構文を指定せずに) 結合名を強制する方法はありますか?

  • 問題のある部分を確実にキャプチャして、適切なバグ レポートに記入するにはどうすればよいですか? デバッガーで、誤った結合ステートメント || を記述しているコードを見つけようとして、かなり迷っています。または、無効な結合関連付け名を持つ不適切な SELECT 句です。

ありがとう

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

ruby-on-rails - 順序対に対する2つの属性の同等性に関するSqueelを使用したカスタムクエリ

SQLであるかどうかにかかわらず、クエリを作成するのに苦労していますが、gemSqueelを使用してrubyでクエリを作成できるようにしたいと思います。基本的に、私はクラスを持っています:

フォーマットの順序付けられたペアの配列を受け取り、渡されたペアと等しいジャンル、パブリッシャーペアを持つすべてのレコードを含む(genre_id, publisher_id)を出力するスコープが必要です。ActiveRecord::Relation

基本的にArticle.where{ genre_id.eq_any [1, 5, 76] }、単一の属性の代わりに、属性のペアにそれが必要な場合を除いて、必要です。

私がそれを行うことを考えることができる唯一の方法は、いくつかの区切り文字で2つのIDを連結する列を追加するselect呼び出しでスコープを作成し、それに基づいて検索することです。

ただし、それはオーバーヘッドが大きすぎるようです。また、[genre_id、publisher_id]に複合インデックスがありますが、これではそのインデックスが使用されないのではないかと心配しています。これは私にとって要件となるでしょう。

これらの複合スコープを作成する簡単な方法はありますか?ありがとう!

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

ruby-on-rails-3 - Rails 3 - squeel でポリモーフィックな belongs_to 関連付けを照会する方法は?

質問/回答アプリケーションにacts_as_votableを使用しています。各質問と各回答は投票できます (スタック オーバーフローのように)。

私はsqueelを使用しており、以下を取得する方法を探しています。質問ごとに、投票数の多いものから少ないものの順に回答を並べます。

そのための最高のスクイールクエリは何ですか?

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

sinatra - Sinatra で Squeel または Meta_where を使用する

Sinatra で ActiveRecord を使用していますが、meta_where または (できれば) squeel で動作するかどうか疑問に思っています。

試してみますが、おそらく誰かが私をショートさせてくれることを望んでいました.

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

ruby-on-rails - squeelにネストされたクエリ

短いバージョン:このクエリをsqueelで作成するにはどうすればよいですか?


長いバージョン:rocket_tagは、モデルに単純なタグ付けを追加するgemです。メソッドを追加しますtagged_with。私のモデルがUser、IDと名前で、を呼び出すことができると仮定しUser.tagged_with ['admin','sales']ます。内部的には、次のsqueelコードを使用します。

このクエリを生成します:

一部のRDBMSはこれに満足していますが、postgresは次のように不平を言っています。

クエリを書くためのより快適な方法は次のようになると思います。

squeelを使ってこれを表現する方法はありますか?

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

ruby-on-rails - Ruby on Rails 3 - gem を使用した高度な検索

ローカル、Skype、および電話 (ブール値、「t」または「f」) と性別 (文字列、「男性」または「女性」) の列を持つユーザー モデルがあります。各ユーザーは、skill_id と方向 (文字列、「教える」または「学ぶ」のいずれか) を持つ関連付けられた SkillMap モデルで多くのスキルを持つことができます。

私は、MetaWhere、Squeel、RanSack をいじり回して、これらのユーザーを可能な限り適切に、最も読みやすく、最もレールに似た方法で検索できるものを見つけようとしています。誰かが私に最も適切な宝石を教えてくれますか?それを構築する方法についてのヒントを教えてください。

現在、検索が実行されるたびに、以下のようなオブジェクトが検索テーブルに作成されます (書式設定が不十分で申し訳ありません。これらのダッシュなしで配列を保存する方法がわかりません)。

したがって、この場合、skype または local フラグが true (phone = 'f' を無視) であり、性別フラグが「Male」であり、かつ、関連する skill_map が direction = 'Teach' および skill_id= であるユーザーを見つけたいと考えています。 795、かつ、direction = 'Learn' で skill_id が IN である skill_map を持っている (789,771,827)

それがより明確になるなら、私はSQLを書くことに挑戦することができますが、ひどいサブクエリを使用してそれを行う方法しか知りません(DBAはこの部分をスキップしたいかもしれません)

これらのフィールドのいずれかが空白または false の場合、それらを検索条件として含めたくありません。

とにかく、それは私の質問です。ご覧いただきありがとうございます。

乾杯、ヨナ

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

ruby-on-rails - ActiveRecord、親レコードが nil のオブジェクトのみ

基本的なフォーラムをセットアップしました。posts#index アクションで、parent_post_id が nil のレコードのみを表示するようにしたいので、返信投稿は表示されません。squeel をインストールしましたが、正しくセットアップされているかどうかわかりません。

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

ruby-on-rails - Squeel を試してみましたが、シンボルが機能しないようです

次のクエリを試しています

しかし、次のエラーが発生します

構文エラー、予期しない '}'、予期しない tASSOC (問題 !~ params[:excludes])})

他の行についても

しかし、きしむドキュメントはそうするように言います:

ps、私はそれを見つけました。最初にそれを見つけることもダニを取得します。

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

ruby-on-rails - squeel で where 条件を動的に処理するにはどうすればよいですか?

この入力から: {'hearing' => 1} このクエリを生成する必要があります

この入力から {'hearing' => 1, 'mobility' => 2} を生成する必要があります。

等々...

これはどのように一般化できますか?私の入力には3つまたは4つのキーがある場合があるため... 1つの場合もあります...

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

ruby-on-rails - Squeel で NOT を使用する

一連の条件があるとします。

...次のように SQL を生成します。

返されたセットを反転するにはどうすればよいですか。つまり、次の sql を返すように Squeel を更新します。

私の問題には動的に生成された一連の条件も含まれているため、これは少し不自然です。実際の条件を変更することはできませんが、NOT() でラップする必要があるだけです。

どこを見るべきかについてのアイデアや提案はありますか?