問題タブ [arel]
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.
activerecord - ネストされた set & join クエリに Arel を使用し、ActiveRecord::Relation に変換します
組織のモデル(ネストされたセット)があります。私は人々のモデルを持っています。人は別の人を代理人にすることができます。組織は個人によって所有されます。組織は、所有者またはその代理人にのみ表示されます。
特定の人が表示できるすべての組織を取得したいと思います。その人が所有する、または特定の人が代理人である人が所有するすべての組織:
最後の結合を定式化するためのより良い方法があるかもしれませんが、個人とその代理人のクエリを、個人とその代理人に表示される組織のクエリから分割したいと思います。
最後の結合は Arel::SelectManager を返します (これに関する有用なドキュメントはどこにもないようです)。
SelectManager を ActiveRecord::Relation に変換して、「構成中の閉鎖」の概念全体から利益を得る方法はありますか?
組織に関する上記のクエリに再度参加して、個人またはその代理人に表示される組織のすべての子孫を取得するにはどうすればよいですか? 私は SQL を知っていますが、常に SelectManager で組織の自己結合に失敗します。
ruby-on-rails-3 - Rails 3 と Arel を使用してサブセレクト (スコープ) に参加するにはどうすればよいですか?
テーブルを select/group-by クエリ (同じテーブルを含む) に結合する必要があり、Arel を使用して実行したいと考えています。
私は自分自身である:phenotypes
which areの表を持っています。その結果、表現型とオルソグループの関係は多対多になります。has_and_belongs_to_many :genes
has_and_belongs_to_many :orthogroups
特定の表現型に関連付けられたすべてのオルソグループを取得する 2 つのスコープ (オルソグループ上) があります。
したがって、実行Orthogroup.with_associated_gene_ids_for_phenotype(48291)
すると、オルトグループ ID と、それらを表現型にリンクする遺伝子のテーブルが返されます。
そのようなものはすべて正常に機能します。
orthogroups.*
問題は、遺伝子のリストが基本的に私の Orthogroup ActiveRecord モデルの追加フィールドのようになるように、残りを取得して 2 番目のスコープの結果に結合したいということです。
おおよそ、次のようなものです。
これで、そのクエリが機能するように見えます。しかし、これらの遺伝子を取得するために、Orthogroup テーブルを独自のスコープに直接結合する方法を見つけたいと思っています。
SQL を使用する方が簡単かもしれませんが、Arel を使用すると簡単な方法があるはずです。同様の質問をいくつか見つけましたが、答えがあるようには見えません。
私が見つけた最も近い解決策はこれです:
出力された SQL は、テーブル「orthogroups」を 2 つのコンテキストで使用しており、これが心配でした。ただし、結果のスポット チェックは、クエリが正しいことを示唆しています。
それでも、これは私が望んでいたエレガントなソリューションではありません。ぎこちなくこれを行うことは可能です"inner join (...)"
か?
sql - Rails3 で ARel を使用してサブクエリを作成する
ARel でこのクエリを作成しようとしています。
クラブごとの会議ごとの平均出席者数を返します。(クラブには多くの例会があり、例会には多くの出席者がいます)
これまでのところ、(クラス Club < ActiveRecord::Base で宣言されています):
しかし、私はエラーが発生しています:
重要な ARel クエリを生成するためのドキュメントを入手するのは少し困難です。http://rdoc.info/github/rails/arel/master/framesを使用していますが、これにアプローチするのは間違っていますか? それとも、解決策から離れたいくつかの方法がありますか?
sql - 結合を使用する ARel クエリで動的集計列を作成することは可能ですか?
私が求めていることを明確にするために、以下の私の質問のサンプルコンテキストを少し示します...
スキーマ
データ
私が結果セットに入れたいのは、ユーザーごとに 1 行、トピックごとに 2 つの列を持つテーブルです。1 つはトピックの正解の合計を示し、もう 1 つは不正解の合計を示します。そのトピックのために。上記のサンプル データの場合、この結果セットは次のようになります。
私の望む結果
明らかに、トピック テーブルにさらにトピックがあった場合、このクエリに既存のトピックごとに新しい correct_sum と illegal_sums を含めたいので、sum 関数に topic_ids をハードコーディングせずにこれを書き込む方法を探しています。私のselect句の。
ARel を使って、この種の魔法をかけるスマートな方法はありますか?
sql - Rails3で検索を実行するにはどうすればよいですか?
where()
次のようにモデルを
呼び出すことでクエリを検索できることを認識しています。Post.where(:title => 'My First Post')
ただし、ユーザーが検索パラメーターをフィルターで除外するかどうかわからない場合はどうなりますか?たとえば、オプションのtitle
フィールドがある検索フォームがあります。タイトルが入力されている場合、フォームはタイトルを検索する必要があります。ただし、そうでない場合は、フォームはすべてのフィールドを返す必要があります。
私はの線に沿って何かをしてみました
ただし、Post.allを呼び出すと、Railsはすぐに検索結果を返し、条件をさらに追加することはできません/
どうすればよいですか?
ありがとう!
activerecord - RailsのクエリからIDの配列を除外する方法(ActiveRecordを使用)?
特定の ID を持つレコードを除くすべてのレコードを返す ActiveRecord クエリを実行したいと考えています。除外したいIDは配列に格納されています。そう:
2行目を完成させる方法がわかりません。
背景:私がすでに試したこと:
バックグラウンドが必要かどうかはわかりませんが、既に .find と .where のさまざまな組み合わせを試しました。例えば:
これらは失敗します。 このヒントは正しい方向に進んでいるかもしれませんが、私はそれを適応させることに成功していません. どんな助けでも大歓迎です。
sql - :has_and_belongst_to_manyの場合、レールにネストされたSQLクエリ
私のアプリケーションでは、ユーザーがまだ実行していない次のタスクを実行します。私には3つのモデルがあります。多くのタスクがある本と、多くのタスクを持っていてそれに属しているユーザーがいます。テーブルtasks_usersテーブルには、完了したすべてのタスクが含まれているため、実行する次のタスクを見つけるために複雑なクエリを作成する必要があります。
私は純粋なSQLで機能する2つのソリューションを考え出しましたが、それらをRailsに変換することはできません。それが、私が助けを必要としていることです。
ネストされた選択なしでも同様に
これは私がMetaWhereプラグインを使ってRailsで行ったことです
しかし、私は現在のユーザーをそこに連れて行く方法も理解できません、
助けてくれてありがとう!
ruby-on-rails - Rails3のselectで奇妙なこと
私のアプリでは、私はラインを持っています
そしてそれはうまくいきます。
Rails3構文に書き直したとき、
それは私にエラーを投げます、と言って
それで、私はコンソールでいくつかのランダムなクエリを実行し、それを見つけました:
同じエラーを返しますが、
正常に動作します。
誰かがこの理由を教えてもらえますか?私は頭をかいてきましたが、次のような適切な理由に到達しませんでした:
Model.select(attribute)は、最初にすべてのレコードをフェッチしてそれらの名前を選択し、次にid_arrayで一致するIDを持つレコードを検索します。
10レコードだけの名前が必要な場合、上記のクエリは最初にテーブルからすべてのレコードの名前を取得し、次に必要な10個の名前を取得します。
編集済み:注:次のクエリは正常に機能します。
ruby-on-rails - 複数形であると考えているため、ビジネスという単語から「s」を削除するレールはありますか?
私を取得します:
なぜそれはビジネスを逃したり、モデルを検出しなかったりし続けるのですか?ここをめちゃくちゃにしているのは私だと確信しています。:(
sql - Rails3投票テーブルの質問に参加
テーブルposts
とポリモーフィックテーブルがありますvotes
。
テーブルは次のvotes
ようになります。
ユーザーがまだ投票していないすべての投稿を一覧表示したいと思います。現在、私は基本的に、彼らがすでに投票したすべての投稿を取得し、投稿のセット全体からそれを差し引いています。それは動作しますが、私が現在持っているのであまり便利ではありません。