2009-08-06 7 views

答えて

2

アイテムを削除するには、削除ページにリダイレクトする必要はありません。フィルタが動作する前にA。

# application_controller.rb 
def destroy_when_cookie_is_nil 
    some_record.destroy if cookies[:time].nil? 
end 

# some controller 
before_filter :destroy_when_cookie_is_nil 

しかしクッキーの満了に基づいてレコードを削除することは私には良い解決策のように見えるしていません。 5日後にレコードを削除したい場合は、クッキーを使用せず、モデルにexpires_at datetimeカラムを追加することを強くお勧めします。この列は、コールバックによって自動的に設定できます。

# in model 
before_create :set_expiration 
def set_expiration 
    self.expires_at = 5.days.from_now 
end 

名前付きスコープをモデルに追加して、期限切れではないレコードをフェッチすることができます。

# in model 
named_scope :active, lambda { {:conditions => ["expires_at IS NULL OR expires_at >=", Time.zone.now]} } 

次に、あなたは唯一の非期限切れのレコードを表示するItem.activeを呼び出すことができます。これらがデータベースから確実に削除されるようにするには、期限切れのレコードをすべて検索して削除するcronタスクを設定します。

関連する問題