タグ付けされた質問 「arel」

5
NOT NILを使用した状態のレール
rails 3スタイルを使用して、私はどのように反対のことを書けますか? Foo.includes(:bar).where(:bars=>{:id=>nil}) idがnilでない場所を見つけたいのですが。私は試した: Foo.includes(:bar).where(:bars=>{:id=>!nil}).to_sql しかし、それは戻ります: => "SELECT \"foos\".* FROM \"foos\" WHERE (\"bars\".\"id\" = 1)" これは間違いなく私が必要としているものではなく、ARelのバグのように見えます。

8
Railsで関連するレコードのないレコードを検索したい
単純な関連付けを検討してください... class Person has_many :friends end class Friend belongs_to :person end ARelやmeta_whereに友達がいないすべての人を取得する最もクリーンな方法は何ですか? そして、has_many:throughバージョンはどうですか? class Person has_many :contacts has_many :friends, :through => :contacts, :uniq => true end class Friend has_many :contacts has_many :people, :through => :contacts, :uniq => true end class Contact belongs_to :friend belongs_to :person end 私は本当にcounter_cacheを使いたくない-そして私が読んだことから私はそれがhas_many:throughで動作しない すべてのperson.friendsレコードをプルしてRubyでループ処理したくない-meta_search gemで使用できるクエリ/スコープが欲しい クエリのパフォーマンスコストは気にしません …

8
2つのActiveRecord :: Relationオブジェクトを組み合わせる
次の2つのオブジェクトがあるとします。 first_name_relation = User.where(:first_name => 'Tobias') # ActiveRecord::Relation last_name_relation = User.where(:last_name => 'Fünke') # ActiveRecord::Relation 2つの関係を組み合わせて、ActiveRecord::Relation両方の条件を含む1つのオブジェクトを生成することは可能ですか? 注:この動作を取得する場所をチェーンできることを知っていActiveRecord::Relationます。私が本当に興味を持っているのは、2つの個別のオブジェクトがある場合です。

3
ArelとRailsでLIKEクエリを行う方法は?
私は次のようなことをしたいです: SELECT * FROM USER WHERE NAME LIKE '%Smith%'; アレルでの私の試み: # params[:query] = 'Smith' User.where("name like '%?%'", params[:query]).to_sql ただし、これは次のようになります。 SELECT * FROM USER WHERE NAME LIKE '%'Smith'%'; Arelはクエリ文字列 'Smith'を正しくラップしますが、これはLIKEステートメントであるため機能しません。 ArelでLIKEクエリを実行するにはどうすればよいですか? PSボーナス-実際には、名前と説明の両方のテーブルの2つのフィールドをスキャンして、クエリに一致するものがないか確認しています。それはどのように機能しますか?

4
Rails 3.0のArelとは正確には何ですか?
ActiveRecordの代わりであり、クエリの代わりにオブジェクトを使用することを理解しています。 だが... なぜこれが良いのですか? オブジェクト/クエリは「簡単に」作成できますか? それはより効率的なSQLクエリにつながりますか? すべての主要なDBと互換性がありますか?-そうなると思います。 ストアドプロシージャでの使用は簡単/困難ですか?

5
activerecordのサブクエリ
SQLを使用すると、このようなサブクエリを簡単に実行できます User.where(:id => Account.where(..).select(:user_id)) これにより、次のものが生成されます。 SELECT * FROM users WHERE id IN (SELECT user_id FROM accounts WHERE ..) Railsの3activerecord / arel / meta_whereを使用してこれを行うにはどうすればよいですか? 私は実際のサブクエリが必要です/必要です。ルビーの回避策はありません(いくつかのクエリを使用)。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.