【发布时间】:2011-10-04 13:07:53
【问题描述】:
我有一个这样的查询:
locations = Location.order('id ASC').limit(10)
它返回一个包含 500 条左右记录的数组 - 表中的所有记录 - 即忽略限制子句。
如果我把 .all 放在最后:
locations = Location.order('id ASC').limit(10).all
它工作并返回 10 条记录。
这段代码在 rake 任务中运行,如果有什么不同,我正在使用 PostgreSQL。
为什么要这样做?当然 .all 不应该是必需的。我错过了什么?
【问题讨论】:
-
我想知道它是否与延迟加载有关:除非附加 .all, .first ... 否则不会触发查询
-
您使用的是哪个版本的 Rails?因为我使用的是 3.0.9,我无法重现这个..
-
你运行的是什么版本的 Rails?它适用于我在 Rails 3.0x 中。您是否尝试将“.to_sql”附加到末尾以查看它正在运行什么查询?
-
将 to_sql 添加到第一个示例会产生正确的 SQL:SELECT "locations".* FROM "locations" ORDER BY id ASC LIMIT 10 但第二个失败,因为 .all 进入数组
标签: ruby-on-rails activerecord rake