记录过期

时间:2013-11-16 17:29:40

标签: ruby-on-rails activerecord ruby-on-rails-4

My Rails应用程序允许管理员向其他玩家提供存储在数据库表中的违规行为。这些违规行为具有相加值,可为玩家提供积分值。但是,这些记录将包含到期时间戳。有没有办法在达到失效日期时自动删除违规记录?

1 个答案:

答案 0 :(得分:3)

如何使用过滤掉过期记录的默认范围?像

这样的东西
class Infraction < ActiveRecord::Base

  default_scope -> { where("expired_at IS NULL OR expired_at < ?", Time.now) }

  before_create :set_expired_at

  private
  def set_expired_at
    self.expired_at = Time.now + 1.week
  end

end

这样,您可以执行Infraction.find(4),如果id == 4的违规行为已过期,则不会返回。