問題タブ [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.

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

ruby-on-rails-3 - ActiveRecord::Relation は、外部キーだけでなく、より多くの条件で結合します

ActiveRecord::Relation を使用して左外部結合に複数の条件を指定する方法はありますか?

たとえば、次の SQL ステートメントを考えてみましょう。ActiveRecord::Relation オブジェクトを使用して、これをどのように書き換えることができますか?

ActiveRecord 3.0.3+ でこれを行う方法はありますか?

前もって感謝します。

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

ruby-on-rails-3 - Rails 3、RSpec 2.5: 名前付きスコープで should_receive または stub_chain を使用する

Rails 3.0.4 と RSpec 2.5 を使用しています。私のコントローラーでは、名前付きスコープを多用しています。たとえば、

私のテストでは、文言ではなく、そのようなクエリの結果をモックできるようにしたいと考えています。次のようなことをしても意味がないと思います

名前付きスコープの並べ替えを決定した時点で、このテストは失敗するためです。

Rails 2.3 と RSpec 1.x では、これはうまくいきました。

上記の呼び出しはキャッチされ、正しく処理されます。しかし、Rails 3 では、何らかの理由でこれが機能しなくなりました。

なんで?ネストされたスコープの結果に期待値またはスタブを設定するにはどうすればよいですか? Rails 3 の ActiveModel 内のすべてが名前付きスコープであるため (ARel のおかげで)、これは何らかの方法で可能でなければならず、そうしないとテストが非常に脆弱になります。

ありがとう!

更新: GitHub の問題レポートも参照してください。

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

ruby-on-rails-3 - Rails3 & ActiveRecord::Relation - Arel と OR

イベントと呼ばれるモデルで定義されたスコープがいくつかあります。ここで、OR 演算子を使用してそれらを結合する必要があります。私は Rails3 を使用していますが、ActiveRelation と Arel、およびこれをどのように使用するべきかについて少し混乱しています。

イベントを取得する方法

しようEvents.for_company(X).or(issues)とすると、エラーが発生します

NoMethodError: #ActiveRecord::Relation の未定義のメソッド「or」

を使っEvents.for_company(Company.find(1)).arel.or(Events.issues)

NoMethodError: #Arel::SelectManager の未定義のメソッド「or」

問題である、またはユーザーが決定された会社の場所であるすべてのイベントを取得したい。

ありがとう。

0 投票する
6 に答える
4898 参照

sql - ActiveRecord::Relation クエリを反転する方法はありますか?

以下があるとしましょう:

どうにかして逆 SQL クエリを取得できますか?

私が探しているものは、おそらく次のようになります。

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

ruby-on-rails-3 - User.where(:id => [1,2])。where(:id => 2).arel.to_sql予期しない結果

Railsコンソールから次のコマンドを実行すると、予期しない結果が発生します。

私はそれがであるとは思っていませんOR

この例はUser、メソッドを定義するテーブルレスモデルの非常に単純化された例です。

データベースのどこCarsに保存されますか。その後、コントローラーで

(わかりました、これも単純化された例ですが、私が達成しようとしていることをはるかに表しています)

0 投票する
9 に答える
81898 参照

ruby-on-rails - Railsでレコードが関連付けられていないレコードを検索したい

単純な関連付けを考えてみましょう...

ARelやmeta_whereに友達がいないすべての人を取得するための最もクリーンな方法は何ですか?

そして、has_many:throughバージョンはどうですか

私は本当にcounter_cacheを使いたくありません-そして私が読んだものからそれはhas_manyで動作しません:through

すべてのperson.friendsレコードをプルして、Rubyでループさせたくありません-meta_searchgemで使用できるクエリ/スコープが必要です

クエリのパフォーマンスコストは気にしません

そして、実際のSQLから離れるほど良い...

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

sql - Rails 3 / Arelのスコープ内のSQL OR

Rails 3モデルスコープを作成しようとしています。これは本質的に次のとおりです。

問題は、これを機能させる方法が見つからないことです。

私は arel_table が機能することを望んでいましたが、「ActiveRecord::Relation にアクセスできません」と不平を言っています:

これは、「公開」スコープを Arel として複製することで実行できますが、コードを繰り返すことになります (私のプロジェクトでは、「公開」スコープはかなり詳細です)。

私が思いつくことができる最高のものはこれです:

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

ruby-on-rails - Rails 3 に含まれる要素を注文する方法

today私は多くのモデル関係を持っていますtasks

ユーザーのtodayオブジェクトを取得し、tasksそれらをすべてJsonに含めてレンダリングしようとしています。は HTML ページのレンダリングにも使用されるため、オブジェクトtasks内でを注文することにするまで、これはすべて順調に進んでいました。を含めて注文する方法はありますか?todayrespond_with blocktasks

私はこのようなことを試みています:

これはすべてを正しく取得しますが、タスクをまったく順序付けしていないようです。

これは私が以前持っていたものです(うまく機能しましたが、順序がありませんでした):

データを取得して、後で次のように並べ替えることができることはわかっています。

これは機能し、テストに合格しますが、これを解決する ActiveRecord の方法を望んでいました。

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

ruby-on-rails-3 - ActiveRecord :: Base.find(something).methodをshould_receiveでどのように指定しますか?

次のコードがあるとしましょう。

should_receiveでどのように指定する必要がありますか?Post#fix_published__at!

0 投票する
5 に答える
59611 参照

ruby-on-rails-3.1 - アクティブレコードのサブクエリ

SQL を使用すると、このようなサブクエリを簡単に実行できます

これにより、次が生成されます。

Rails の 3 つの activerecord/arel/meta_where を使用してこれを行うにはどうすればよいですか?

実際のサブクエリが必要です/必要です.rubyの回避策はありません(いくつかのクエリを使用します)。