Rails cookie - 在日期到期后从页面删除记录

时间:2009-08-06 10:16:25

标签: ruby-on-rails

Rails - 使用cookies如何在日期到期后从页面中删除记录。

它应该在视图页面

中发生 lead_row.created_at.strftime(“%b%d,%Y”),: expires => 5.days.from_now}%> ...应该删除页面..没有任何链接...

1 个答案:

答案 0 :(得分:2)

您无需重定向到删除页面即可删除项目。过滤器之前可以工作。

# 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

然而根据Cookie过期删除记录对我来说似乎不是一个好方法。如果您想在5天后删除记录,我强烈建议您不要使用Cookie,而是在模型中添加expires_at日期时间列。您可以通过回调自动设置此列。

# 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任务以查找所有过期的记录并将其删除。