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