問題タブ [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.
sql - Rails + Squeel クエリの問題
これに完全にこだわっていて、助けが必要です!
ユーザーに特定の設定を入力してもらい、それらの設定に基づいて各ユーザーに一連の結果を表示しています。
ユーザーとこれらのプリファレンスの間には HABTM 関係があります。
ユーザー.rb
Preferences.rb
ユーザー設定.rb
現在、設定には「タグ」と呼ばれる特定の詳細をリストする属性があります。つまり、大きい、小さい、太いなどです。
各ユーザーの好みに基づいて (つまり、選択した好みのタグに基づいて) 各ユーザーのアイテムを表示したいと考えています。
今私はしようとしています:
何らかの理由で、これは最初の優先順位のタグのみを照会します。
たとえば、好み 1 のタグが ["black", "leather", "suede"] で、好み 2 のタグが ["brown", "cloth"] の場合.......最初のセットのみクエリとして渡されます。
ruby-on-rails - Squeelgemで複数のタイムスロットを見つける
属性を持つモデルPlanning
がありstart_time
ます。午前9時から午後12時の間、または午後6時から午後11時までのすべての計画を取得したいとします。
基本的に私はします:
問題は、タイムスロットの数が異なるということです...何か考えはありますか?
それが助けになるなら、私はSqueelgemを使います。
前もって感謝します!
ruby-on-rails - キーパスを検索するメタプログラム Squeel
質問
アレルとキーキーに頭を悩ませようとしていますが、探しているものを Google に尋ねる語彙が不足しているように感じます。
TL;DR: 合成オブジェクトからSqueel のModel.where{related.objects.field.matches string}
構文を模倣する方法を知っている人はいますか?Squeel::Node
問題
この質問は、次のように、文字列から Squeel KeyPath を構築する方法を示しています。
この記事では、複数の列にまたがる検索をメタプログラミングする方法を学びました。文書化された Squeel トリック(ページの最後の行) でクリーンアップすると、次のようになります。
私が望むのは、次の構文を模倣して、2つを組み合わせることができることです
squeel オブジェクトを自分で作成することによって。
最初の部分は簡単で、最初の例で示されています。クエリ対象のテーブルの列に対して直接実行できる 2 番目の部分は、2 番目の例で示されています。
ただし、テーブルに結合された列の 2 番目の部分を実行する方法がわかりません。KeyPath
2 番目の例でオブジェクトのスコープを設定するには、最初の例のオブジェクトを使用する必要があると思いますPredicate
。オブジェクトは、単一のテーブルの単一の列を表すPredicate
オブジェクトでのみ機能するようです。Stub
KeyPath
以前の試み
仮定
matches
KeyPath でメソッドを呼び出してみました。
一致演算子を使用してみました=~
:
そして、パラメータPredicate
を渡して手動でビルドしようとしました::matches
ここでは、SQL を正常に生成し (上記のように正しく結合し、読みやすくするために省略しています)、それをトラバースするのではなく、フィールドであるModel.joins{search_relation}
と想定します。KeyPath
ruby-on-rails - Squeel 使用時の引数の数が間違っている
まず、Rails コンソールで簡単なスクイール テストを行います。
新規作成のRubyプロジェクトは問題なし
ただし、既存のプロジェクトに適用すると、次のエラー メッセージが表示されます。
私が見つけた最も関連性の高い問題はSqueel issue #193です。
Squeel がロードされていないと表示されます。しかし、私の場合、new-created は同じマシンに実装できます。
とにかく、記載されているようにactive_record.rbを変更しようとしましたが、既存のプロジェクトにはまだ問題があります。
Ruby-1.9.3-p125、Rails v3.2.6、Squeel 1.0.14 を使用しています。
ruby-on-rails - プロジェクト モデルに基づくカスタム フィルター/スコープ
簡潔にしようと思いますが、詳細が必要です。カスタム プロジェクト管理システムの (Rails での) 書き直しのプロトタイプを作成しようとしています。主な目的は、アラバマ州に移転または拡大している企業が従業員を募集、選別、および雇用するのを支援することです。現在のシステムは、ほとんどの人が聞いたことのない 4D と Active4D で動作します。ひどい DB ですが、まともなデスクトップ クライアント/サーバー システムです。
聞いたことがないかもしれませんが、彼らはアラバマ州でメルセデス、ホンダ、ヒュンダイを製造しており、これらの会社のほとんどの従業員は、このシステムを使用してこの代理店を通じて雇用されていました。大企業のほかに、この経済開発機関を使用して労働力を選択している他の多くの企業があります。プロセスは主に、従業員数 x の雇用を目標に開始されるプロジェクトです。候補者は州の市民から募集されます。候補者は、主にアプリケーション、面接、評価、トレーニング、採用など、多くの段階または段階からなる選考プロセスを経ます。各プロジェクトは異なり、いくつかのカスタム ステージがある場合があります。各段階には、何らかの方法 (オンライン申請、面接スコアシートなど) で採点される多数の評価がある場合があります。各ステージの評価が完了すると、候補者は次のステージに進みます。
現在の DB 構造は問題ありませんが、いくつかの改善を試みました。以下のモデルと関係は、現在のプロトタイプのスニペットであり、シチズンからプロジェクトへとトップダウンで進んでいます。一部のスルー リレーションは、DB 構造をよりよく理解するために追加されました。各プロジェクトには、通常はジョブベースの異なるプログラムがある可能性があることを指摘するのを忘れていました. また、この管理プロセス (イベントのスケジュール、インストラクターの管理など) を支援するモデルは他にも多数ありますが、ここには示されていません。
質問が来ました!ステージモデルは、候補者が次のステージに進むために選択される場所であるため、システムの重要な部分です。現在のシステムはオンライン プレゼンスの前に設計されたため、教育、スキル、職歴などの半静的な情報が明確に定義されておらず、オンライン アプリケーションの評価として追加されていませんでした。複数のプロジェクトに応募し、プロファイルの一部である情報を繰り返す必要がありました)。プロトタイプは、その情報の一部を評価したいと考えています (高校の卒業証書または GED を持っていますか?) とともに、カスタム プログラム固有の評価 (溶接の経験は何年ありますか?) とともに。
その静的な情報をスクリーニングし、それをカスタム評価スコアと組み合わせるフィルター検索を作成できると考えました。各プロジェクトは、異なる教育とスキル要件を求めている場合があります。プロジェクト/プログラムごとにカスタムスコープが必要なようです。Ransack や Squeel などを調べ始めたところですが、役立つかもしれませんが、一貫して同じフィルターを使用するかどうかはスクリーナー次第です。
フィルター アプローチの前に、私が書いた評価エンジンに機能を追加して、基本的に質問と回答として静的情報をクエリし、それをスコアリングすることを検討しました。問題は、特定の教育の成果を持っている、さまざまなスキルで特定のレベルの経験を持っている、現在の進行状況などで特定のステータスを持っているなどの市民を探し、さまざまなプログラムに合わせてカスタマイズするフィルターにどのようにアプローチするかです。 ?
もちろん、特定の答えを求めているわけではありませんが、アプローチします。
sql - SQLをArelまたはSqueelに変換する
tl; dr
以下のSQLをArel(またはRailsで標準と見なされるもの)に変換する方法
---tlの終わり;dr----
私は小さなWebプロジェクトに取り組んでいます。目標は、顧客のクラッシュレポート(デスクトップアプリがクラッシュすると、サーバーに診断を送信します)を取得し、それらを分析して、アプリケーションの原因となる最も一般的なバグを表示することです。クラッシュ..そのため、ユーザーの最大のチャンクに影響を与えるバグの修正に集中します。
私は2つのテーブルを持っています:
crack_infos --id、md5(.netのスタックトレースのmd5スタックトレースと例外メッセージは.netによってユーザーの母国語に変換されることがあります!したがって、言語固有の部分を削除してmd5を生成することにより、基本的に例外をサニタイズします)
クラッシュ-id、user_guid(ユーザーID)、crash_info_id(idからcrash_infosテーブル)
ここで質問ですが、一意のユーザーの最も一般的なクラッシュを表示するクエリを作成し(同じユーザーの同じクラッシュを何度もカウントすることは避けてください)、クラッシュの数で並べ替えたいと思いました。残念ながら、私は十分なArel(またはRuby on Railsの方法)を知らなかったので、生のSQLになりました:(
これをもっと「レールのような」ものに変換するにはどうすればよいですか?
前もって感謝します
ruby-on-rails - 複数の Gemfile から 1 つの Gemfile を作成する
大きなアプリケーションを複数の小さなアプリケーションに分割しています。Gemfile.global
これを行ったとき、 を作成し、それをメイン アプリケーションとサブ アプリケーションの両方に含めることで、すべての をクリーンアップできることに気付きましたGemfile
。たとえば、デプロイメントの gem はすべて mainGemfile
に入り、レールはGemfile.global
.
Squeel を除いて、ほとんどすべての宝石で機能します。
ルートアプリの私Gemfile
の始まりは次のとおりです。
私Gemfile.global
のように見えます:
bundle install
rails s
Squeel をメインに使用すると、期待どおりに、ほとんどすべてがうまく機能しますGemfile
。ただし、デフォルトのSqueelGemfile.global
イニシャライザを使用すると、初期化プロセスが台無しになります。
rails s
レポートでuninitialized constant Squeel (NameError)
もスローします。この構成方法でRails ランタイム定数が台無しになるのはなぜですか?bundle install
Using squeel (1.0.13)
Gemfile
ruby-on-rails - NOTINの組み合わせの表現
次のようなクエリを作成するためにsqueelを使用したいと思います。
IN
複数のフィールドを配列viaまたはNOT IN
ステートメントと比較する方法があるかどうか知りたいです。
このようなもの(例が機能しないことは承知しています)は、私が言っていることを表現するための良い方法です。
このようなことは可能ですか?
アップデート
複数を使用して同じ最終結果を得る方法を知っています... & (a != b) & (c != d) & ...
が、それは私が尋ねたものではありませんでした。
mysql - Rails AR + Mysql - 映画ジャンルの除外が期待どおりに機能しない
ジャンルの映画データベースがあり、特定のジャンルを除くすべての映画を表示したいとしましょう。私はすべての関連付けをセットアップし、問題なく動作しています。
これを行うために、Squeelという名前の gem に出会い、このコードを書きました。
ええ、Squeel のおかげで、次の SQL を取得できます。
期待どおりに機能するため、ジャンルは含まれていません。
その結果、 where 条件は、それがある場合とない場合に違いが見られないため、適用されないように見えます。
スクリーンショットを参照してください:
なぜそれが機能しないのか、どこから掘り始めるべきなのか、誰にもアイデアはありますか?
すべての助けに感謝します。
ruby-on-rails - Squeelを使用するときに、条件付きでwhereブロックに句を追加できますか?
まず、Railsv3.2.9とSqueel1.0.13を使用しています。これが、私がやろうとしていることです。
名前、生年月日(dob)、社会保険番号(sin)の3つの識別情報のいずれかを使用してクライアントを検索したいと思います。結果セットには、条件のORである識別子のいずれかを持つレコードが含まれている必要があります。私は以前にSqueelでこれを行ったことがあり、次のようになります。
すべての識別子を提供する限り、これは正常に機能します。しかし、私が名前しか持っていない場合はどうなりますか?上記のスコープの結果は次のとおりです。
これには、sinがnullであるクライアントのセットとdobがnullであるクライアントのセット、および「JohnDoe」のような名前の要求されたクライアントのセットが含まれます。
where
したがって、条件付きでブロックに句を追加する試みを入力してください。最初は、nilを使用して値を確認しようとしましたか?方法:
その結果:
その「t」との関係など、他の多くの質問を提起しますが、それは正接です。
各順列のwhere句を記述する以外に、条件付きで句を追加できる方法はありますか?