记录过期

Mel*_*wah 4 activerecord ruby-on-rails ruby-on-rails-4

我的 Rails 应用程序允许管理员向其他玩家发出违规信息,这些信息存储在数据库表中。这些违规行为具有分值,累加起来即可为玩家提供分值。但是,这些记录将包含到期时间戳。有没有什么方法可以让违规记录过期后自动删除?

小智 5

使用默认范围来过滤掉过期记录怎么样?就像是

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
Run Code Online (Sandbox Code Playgroud)

这样就可以了Infraction.find(4),如果id==4的违章过期了,就不会被退回了。