Rails:查找表中最旧的项目

Pab*_*abi 4 activerecord datetime ruby-on-rails

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

我试图将所有项目添加到数组中,然后获取最旧的值,然后使用 .where 活动记录方法将其转换回来以获取在该日期创建的对象。

这是我到目前为止:

date_array=[]
      buy_requests.each do |buy_request|
        date_array << buy_request.created_at
      end
      date_array.min
Run Code Online (Sandbox Code Playgroud)

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

我遇到的一个问题是,当我将日期添加到数组时,我不再拥有它的创建时间,因此一旦我使用 .min 获得最旧的日期,我就不能再使用 .where。

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

Dav*_*dge 6

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

BuyRequests.order(:created_at).limit(1)
Run Code Online (Sandbox Code Playgroud)

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

BuyRequests.first
Run Code Online (Sandbox Code Playgroud)

...如果您的 id 以先到先得的顺序可靠地分配。

您可能希望在相等的 created_at 时间戳上打破平局:

BuyRequests.order(:created_at, :id).limit(1)
Run Code Online (Sandbox Code Playgroud)