我试图找到一种方法来获取最旧的created_at值,以获取类中的最旧对象,所以我以后可以对其进行操作。

我正在尝试将所有项目添加到数组中,然后获取最旧的值,然后使用.where active record方法将其转换回该日期创建的对象。

这是我到目前为止的内容:

date_array=[]
      buy_requests.each do |buy_request|
        date_array << buy_request.created_at
      end
      date_array.min


但是我觉得有更简单的方法可以做到这一点。

我遇到的问题之一是,当我将日期添加到数组时,我不再具有创建日期的时间,因此我将无法再使用.where,一旦我使用.min获得了最早的日期。

谢谢。如果我不够清楚,请告诉我。

最佳答案

无需获取最早的时间戳,然后获取相应的对象,只需:

BuyRequests.order(:created_at).limit(1)


...这将受益于created_at上的索引,或者...

BuyRequests.first


...如果您的ID已按照先到先得的顺序可靠分配。

您可能想在相等的created_at时间戳记上平分秋色:

BuyRequests.order(:created_at, :id).limit(1)

10-04 22:13