0

予約APIを作成していますが、ユーザーが予約アプリを使用している間、アセットの一時的な保留を作成したいと思います。したがって、基本的には、一定の期間が経過すると期限切れになる一時的なレコードをDBに作成する方法が必要です。私がそれをどのように行うべきかについてのアイデアはありますか?

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


次に、たとえば1時間または毎日、 1時間(または他の期間)より古いすべてのレコードをクリーンアップするcronジョブがあります。

また、手動ジョブにすることもできます。たとえば、コントローラーとモデルの更新アクションを使用して、ビューリンクからトリガーします。

# 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 に答える