прекратить meta_search делать sql рано - PullRequest
1 голос
/ 30 марта 2011

в документах сказано:

MyObject.search()

возвращает экземпляр MetaSearch :: Builder (что-то вроде ActiveRecord :: Relation). Но в моем случае, когда я делаю это, я получаю коллекцию объектов, потому что sql-запрос отправляется в базу данных.

Я бы хотел что-то вроде этого:

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

консоль, кажется, вызывает дополнительный метод после каждой команды

1 Ответ

2 голосов
/ 31 марта 2011

Если вы тестируете в irb, помните, что возвращаемые объекты проверяются.В случае с MetaSearch это означает, что отношение проверяется.Если вы посмотрите на метод проверки ActiveRecord, в файле ratio.rb вы увидите, что он вызывает to_a, который выполняет запрос и возвращает результаты.

...