1

假设我有很多User记录 - 如果我打电话User.first保证是数据库中存在的第一个用户,或者我应该排序created_at以确保排序是 by created_at?请注意,我使用的是 mongoid 而不是 ActiveRecord。

4

2 回答 2

0

User.first返回按主键排序的第一个用户(参见Active Record 查询指南的 1.1.3 节)。

大多数情况下,它将是第一个创建的项目,但不能保证。取决于数据库的填充方式。所以你应该使用:

Client.order('created_at').first
于 2013-08-31T17:46:33.250 回答
0

First 返回查询中的第一个对象。在您的示例中,调用User.first返回数据集中的第一条记录User.all。虽然默认情况下这将是按主键顺序排列的第一条记录,但如果您在查询中放置了任何顺序条件(包括模型上的默认范围),它将根据给定的顺序返回第一个对象。

例如User.all.order("last_name").first,将返回具有第一个按字母顺序排列的姓氏的记录。或者User.all.order("updated_at DESC").first会返回最近更新的用户。

如果您没有在查询中设置任何排序范围,则排序将默认为创建记录时的顺序,并且不需要其他排序。有关这些功能方式的更多信息,请查看Active Record Query Interface上的此 rails 指南条目

于 2013-08-31T18:01:44.040 回答