My Rails应用程序允许管理员向其他玩家提供存储在数据库表中的违规行为。这些违规行为具有相加值,可为玩家提供积分值。但是,这些记录将包含到期时间戳。有没有办法在达到失效日期时自动删除违规记录?
答案 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的违规行为已过期,则不会返回。