0

我正在编写一个预订 API,并且我想在用户通过预订应用程序时创建资产的临时保留。所以基本上,我需要一种方法来在我的数据库中创建临时记录,这些记录会在某个时间段过后过期。关于我应该如何做的任何想法?

4

1 回答 1

0
class Reservation < ActiveRecord::Base
  def reservation_has_ended
    Time.now > reservation_datetime
  end
  # or...
  def reservation_is_open
    Time.now < reservation_datetime
  end
  # similarly...
  scope is_open where(Time.now > reservation_datetime)
  scope has_ended where(Time.now < reservation_datetime)
  # ... but remember scopes are going away in rails 4.1...
end

然后我会有一个 cron 工作,比如每小时或每天,
清理所有 > 1 小时(或其他时间)的记录。

您还可以使其成为一项手动工作,从视图链接触发,并在控制器和模型中执行更新操作,例如,

# Reservation View
<%= link_to("Purge records", Reservation.purge) %>

# Reservation Controller
def remove_old_reservations
  Reservation.remove_old_reservations
end 

# Reservation Model:
def remove_old_reservations
  self.delete_all.where((Time.now - 1.hour) > reservation_datetime)
end 
于 2012-12-18T02:38:05.283 回答