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的违章过期了,就不会被退回了。
| 归档时间: |
|
| 查看次数: |
1896 次 |
| 最近记录: |