4

aそしてb、同じタイプのオブジェクトを返す ActiveRecord::Relation オブジェクトです (この場合は Micropost オブジェクト)

a.class
=> ActiveRecord::Relation
b.class
=> ActiveRecord::Relation
a.first
=> Micropost(...) 
b.first
=> Micropost(...) #They both return the same type of objects
c=a+b
c.class
=> Array #This is not what i'm looking for
c=a|b
c.class
=> Array #Not what i'm looking for either
c=(a or b)
c.class
=> ActiveRecord::Relation #But it is just a, so it's wrong
c==a
=> true
a.merge(b)
=> []  #It merges with AND which in my case results in an empty array

Rails 3.2.11で両方のRelationオブジェクトを「OR」して別のRelationオブジェクトを返す方法はありますか? それを行うためにgemを使用する必要がありますsqueelか?

できない場合:なぜできないのですか?a|bデータベースからすべてのレコードをロードせずに、結果の配列をページ付けできますか?
それができる場合:誰かがそれを行う方法の例を書いてもらえますか?

前もって感謝します。

編集: 間違った変数をコード ブロックにコピーしました。b は ActiveRecord::Relation ではなく、実際には配列でした。そのため、a.merge(b) は [] を返しました。私のせいです。

TLDR: 質問が間違っています。配列はページ付けできます:)

4

1 に答える 1

3

あなたの質問のために:Can I paginate the array resulting from a|b without loading every record from the database?

はい、ページ分割できますarray。あなたがする必要があるrequire 'will_paginate/array'のはあなたがのために使用しているファイルpaginateですarray。多くの場所で使用している場合は、に追加することをお勧めしますconfig/initializers。また、その配列により、クエリが1回だけ実行されるたびにデータベースからすべてのレコードが読み込まれることはありません。アソシエーションをロードするには、を使用eager load on arrayして使用できますinclude

于 2013-02-24T17:50:00.627 に答える