如何在rails上“归档”记录

时间:2014-02-25 19:35:44

标签: ruby-on-rails-3 activerecord

我正在尝试在Rails 3应用程序中创建“归档”功能。当存档父项时,我在数据库中隐藏子关系时遇到了麻烦。

我的项目设置为父记录有一个名为archived_on的属性。如果值为nil,则不记录记录。如何构建我的查询以使子模型能够隐藏包含已归档父级的记录?

父模型有一个范围:

scope :archived, where('archived_on != ?', nil)

仅适用于父模型。

我基本上在寻找一种方法来做一个Child.where('bla'),它只返回未归档的东西。

有没有办法做到这一点,而不必给每个孩子自己的archived_on属性?

1 个答案:

答案 0 :(得分:1)

这是我所做的:

创建一个models/concern/archivable.rb

module Archivable
  extend ActiveSupport::Concern

  included do
    scope :archived, -> { where('archived_at != ?', nil) }
  end
end

然后将其包含在要归档的模型类中。

为每个模型生成迁移,并添加“ archived_at”属性。