ruby-on-rails - 记录到期

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

My Rails 应用程序允许管理员向其他玩家提出违规行为,这些违规行为存储在数据库表中。这些违规行为的分数加起来会给玩家一个分数。但是,这些记录将包含到期时间戳。有没有什么办法可以在到期后自动删除违规记录?

最佳答案

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

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 的违规行为已过期,则不会返回。

关于ruby-on-rails - 记录到期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20021461/

相关文章:

ruby-on-rails - ActiveRecord 在 Rails 4.1.2 中包含过度连接表非常慢

sql - 如何查找带有多个标签的帖子

mysql - rails、mysql 字符集和编码 : binary

Javascript 代码在 Rails 中无法正常工作

ruby-on-rails - maximum in group by 事件记录查询

javascript - Application.js 没有被处理成最终 View

ruby-on-rails - 基于模型父属性的 rails 范围

ruby-on-rails - def to_s 函数是什么?

ruby-on-rails - Ruby on Rails,rake 数据库 :seed or db:reset - how do you dictate which mode (development/test/production)?

ruby-on-rails - ActiveRecord rails 4 不等于条件