問題タブ [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 - 'where' 内のループ
whereステートメント内である種のループまたはイテレータを使用したい
このようなことは可能ですか?
実際のクエリはもっと複雑なので、アーキテクチャ全体をここに掲載したくありません。
ruby-on-rails - Rails 4 ActiveRecord::Relation ArgumentError は意味をなさない
これはかなり単純な Rails 4 の状況です。モデル イントラネット has_many アクティビティ。いくつかのイントラネットに十分な記録を持つ活動が存在します。Current_intranet.activities.size は 69 レコードを返します。ただし、いずれかのレコードにアクセスしようとすると、「出力エラー:<ArgumentError: wrong number of arguments (1 for 0)"
引数を渡していないにもかかわらず」が表示されます。次のすべてがそのエラーで失敗します。
他のモデルでも問題ありません。ご提案をいただければ幸いです。前もって感謝します。
定義されたスコープはありません。コードは次のとおりです。
ruby-on-rails - Rails、ActiveRecord、Squeel: 配列に値が存在するかどうかを確認する
「俳優」と「役割」の2つのテーブルがあります。各テーブルには「民族性」という名前の列があります。アクターは 1 つの民族性しか持つことができませんが、ロールは 1 つ以上の民族性を持つことができます。
たとえば、以下の Actor1 の民族性に一致するすべての役割を検索したいと
し
ます
。
このクエリ:
Role1 をプルアップしますが、Role2 はプルアップしません。私の質問は、この例で Role1 と Role2 をプルするクエリをどのように構築すればよいですか?
私はやってみました:
しかし、それはうまくいかないようです。
これを行う方法?
ruby-on-rails - ruby - 別のメソッドから返されたコードを評価する
ルビー2とレール4
このコードのチャンクを考えてみましょう:
これはそれ自体でうまく機能します。
私がやりたいことは(group_id.in [1,2,3,4]) | (event_id.in [5,6,7,8])
、これをローカル変数、メソッド、ブロックなどから取得することです。
多くのクエリがあり、このコードを 1 つの場所に含めたいと考えています。
ブロックをyield、Proc、lambasで使用するなど、いくつかのことを試しました。私は行き詰まり続けているようです:NameError (undefined local variable or method 'group_id')
注:ブロックに使用する独自のDSLを含むsqueelを使用instance_eval
しています。経由でアクセスできるので、これで問題ありませんmy{<method_name_here>}
。
これが私が試したことです:
私が得ることができる最高のものは次のとおりです。NameError (undefined local variable or method 'group_id')
これを処理する方法があるに違いないことはわかっていますが、今は思い浮かびません。
また、私が扱っている実際のコードは、ここで説明しているものよりもはるかに複雑ですが、この例では簡略化しています。
ruby - where ブロック内の変数の存在に関する ActiveRecord 条件
完全に機能するSqueelを使用したこのコードがありました:
これは、存在する場合にのみ列のクエリを作成し、entry[:variable_name]
存在しない場合は無視するため、非常に便利です。次のようなクエリを作成しました。
このブロックの素晴らしいところは、変数が存在するかどうかを気にする必要がないことです。変数が 1 つしかない場合、クエリはOR
ステートメントを使用しません。大きな混乱を招くことなく条件文。
また、このクエリの要点は、変数が存在しない場合は使用しないことです。 column = NULL
を検索するcolumn = NULL
と、役に立たない間違ったヒットが大量に取得されます。
しかし、Squeel はもはやメンテナンスされておらず、ActiveRecord 4.1 (および Rails 4.1 の拡張機能) でさまざまな問題が発生しています。したがって、以上を使用したい場合に私が持っている唯一の選択肢は、私がAR 4.1.1
持っていたすべてのきしむクエリを取り除くことです。
私の質問は、AR.where
ブロックでこれを行うことは可能ですか? いいえ以外の答えが見つからないようです。不可能です。
mysql - Rails 4 Active Record 2 異なる関係 同じモデル スコープ
私はこれらのモデルを持っています:
martian.skill.name = 'drive' または person.skill.name = 'drive' の宇宙船を見つけるスコープが必要です
最初は簡単に思えますが、そうではありません。
関連付けのみをカウントするため、このスコープは機能しませんmartian.skill
。
SQLで結合部分を作成し、テーブルエイリアスを使用してみました。動作しますが、他のスコープとチェーンすると SQL エラーが発生します。
私も試してみましjoins(...).merge(joins(...))
たが、まだ最後の関係しか得られません。
Active Record には 'union' ステートメントがありません。実装する方法をいくつか見てきましたが、複雑すぎてハックになるかどうかはわかりません。
何か案が?
ありがとう。
編集:
今ではsqueel where{(martian.skill.eq skill_name)|(people.skills.eq skill_name)}
を使用して解決しましたが、プレーンな AR で可能かどうかを知りたいです。