Rails - .first保证是第一次创建,或者只是第一次获取?

时间:2013-08-31 17:38:29

标签: ruby-on-rails mongodb mongoid

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

2 个答案:

答案 0 :(得分:0)

User.first返回按主键排序的第一个用户(请参阅Active Record Query Guide的第1.1.3节)。

大部分时间它都是首次创建的项目,但不能保证。取决于数据库的填充方式。所以你应该使用:

Client.order('created_at').first

答案 1 :(得分:0)

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

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

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