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 尽早进行查询?

-> 好的,我的 shell 中发生了一些神秘的事情:

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 回答