1

ドキュメントには次のように書かれています:

MyObject.search()

MetaSearch::Builder (ActiveRecord::Relation のようなもの) のインスタンスを返します。しかし、私の場合、これを行うと、sql-query がデータベースに送信されるため、オブジェクトのコレクションが取得されます。

私はこのようなものが欲しいです:

search = MyObject.search() # no sql-query should be done here

count = search.count # count sql done

objects = search.all # select sql done - maybee with pagination

Meta_search が早期にクエリを実行するのを止める方法を知っている人はいますか?

->わかりました、私のシェルで何か不思議なことが起こっています:

search = MyObject.search() # queries the database
search = MyObject.search(); 0 # stores a MetaSearch-Object in search

コンソールは、各コマンドの後に追加のメソッドを呼び出すようです

4

1 に答える 1

2

irb でテストしている場合は、返されたオブジェクトが検査されることに注意してください。MetaSearch ビルダーの場合、これは関係が検査されることを意味します。ActiveRecord の inspect メソッドを見ると、relation.rb で、クエリを実行して結果を返す to_a が呼び出されていることがわかります。

于 2011-03-31T10:54:53.823 に答える