問題タブ [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 投票する
1 に答える
106 参照

sql - Rails、squeel - 'where' 内のループ

whereステートメント内である種のループまたはイテレータを使用したい

このようなことは可能ですか?

実際のクエリはもっと​​複雑なので、アーキテクチャ全体をここに掲載したくありません。

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

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)"引数を渡していないにもかかわらず」が表示されます。次のすべてがそのエラーで失敗します。

他のモデルでも問題ありません。ご提案をいただければ幸いです。前もって感謝します。

定義されたスコープはありません。コードは次のとおりです。

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

ruby-on-rails - Rails、ActiveRecord、Squeel: 配列に値が存在するかどうかを確認する

「俳優」と「役割」の2つのテーブルがあります。各テーブルには「民族性」という名前の列があります。アクターは 1 つの民族性しか持つことができませんが、ロールは 1 つ以上の民族性を持つことができます。

たとえば、以下の Actor1 の民族性に一致するすべての役割を検索したいと し
ます 。

このクエリ:

Role1 をプルアップしますが、Role2 はプルアップしません。私の質問は、この例で Role1 と Role2 をプルするクエリをどのように構築すればよいですか?

私はやってみました:

しかし、それはうまくいかないようです。

これを行う方法?

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

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')

これを処理する方法があるに違いないことはわかっていますが、今は思い浮かびません。

また、私が扱っている実際のコードは、ここで説明しているものよりもはるかに複雑ですが、この例では簡略化しています。

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

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ブロックでこれを行うことは可能ですか? いいえ以外の答えが見つからないようです。不可能です。

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

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 で可能かどうかを知りたいです。