我正在尝试在Rails 3应用程序中创建“归档”功能。当存档父项时,我在数据库中隐藏子关系时遇到了麻烦。
我的项目设置为父记录有一个名为archived_on
的属性。如果值为nil,则不记录记录。如何构建我的查询以使子模型能够隐藏包含已归档父级的记录?
父模型有一个范围:
scope :archived, where('archived_on != ?', nil)
仅适用于父模型。
我基本上在寻找一种方法来做一个Child.where('bla'),它只返回未归档的东西。
有没有办法做到这一点,而不必给每个孩子自己的archived_on
属性?
答案 0 :(得分:1)
这是我所做的:
创建一个models/concern/archivable.rb
module Archivable
extend ActiveSupport::Concern
included do
scope :archived, -> { where('archived_at != ?', nil) }
end
end
然后将其包含在要归档的模型类中。
为每个模型生成迁移,并添加“ archived_at”属性。