我的 rails 应用程序需要对某些记录进行“软”删除,以便它们被停用,而不会实际从数据库中删除。目前我用“is_deleted”标志实现了它。
我的问题是是否有处理涉及此模型的关联的最佳实践。例如:
class Foo
attr_accessible :is_deleted
scope :active, -> { where(is_deleted:false) }
belongs_to :bar
end
class Bar
has_many :foos
end
我试图弄清楚如何设置 Bar 模型,知道它通常只处理“活动”foos。
我提出了一些想法,并想知道使用其中一个是否有任何优点/缺点。
- 在 has_many 声明上使用“条件”限定符来过滤掉已删除的项目。
- 在 Bar 上创建一个“active_foos”方法以仅返回未删除的项目。
- 只需使用“ acts_as_paranoid ”宝石。对于我需要的东西来说,它感觉有点重,但也许是最简单的。