Rails过滤掉关联中的已删除记录

林恩

我的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 ” gem。它可以满足我的需求,但这也许是最简单的。
陈慧琳

techwineet的建议很不错。但是对于当前代码,最简单的解决方案是,如果需要经常处理,则将“活动”设置为默认范围。

class Foo
  attr_accessible :is_deleted
  default_scope   -> { where(is_deleted:false) }  
  scope :active,  -> { where(is_deleted:false) }
  scope :deleted, -> { where(is_deleted:true) }
  belongs_to :bar   
end

class Bar
   has_many :foos
   # optional delegation
   delegate :active, :delete, to: :foos, prefix: true
end

Foo.all           #=> Return active foos. Or better to use Foo.scoped
Foo.deleted       #=> Return all deleted foos
Foo.unscoped      #=> Return all foos, both active and deleted

bar = Bar.first
bar.foos          #=> Return associated active foos
bar.foos.active   #=> Return associated active foos
bar.foos.deleted  #=> Return associated deleted foos
bar.foos.unscoped #=> Return all associated foos

# Optional delegation
bar.foos_active   #=> Return associated active foos
bar.foos_deleted  #=> Return associated deleted foos

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何自动过滤掉Django关联表中的is_deleted记录?

来自分类Dev

过滤掉外壳文件中匹配的记录

来自分类Dev

过滤掉整个记录 SQL

来自分类Dev

从查询集中删除(过滤掉)对象

来自分类Dev

Ruby on Rails 过滤掉约束

来自分类Dev

从valgrind输出中过滤掉垃圾

来自分类Dev

如何从项目列表中过滤掉

来自分类Dev

过滤掉Java中的价格或成本

来自分类Dev

过滤掉对象中的特定键

来自分类Dev

过滤掉PHP中的部分单词

来自分类Dev

根据子记录条件过滤掉父记录

来自分类Dev

Money-rails字段被Rails 4 + Mongoid中的强参数过滤掉

来自分类Dev

Spring Batch使用Processor过滤掉记录

来自分类Dev

过滤掉特定时期的一些记录

来自分类Dev

api平台过滤掉软删除的项目

来自分类Dev

在 Log4j2 中,是否可以根据键从记录器中过滤掉某些键值对?

来自分类Dev

无法从关联表中删除记录(Rails)

来自分类Dev

根据用户输入过滤掉表单中的记录选择的更好方法是什么?_afterupdate 还是 _beforeupdate?

来自分类Dev

从模板执行中过滤掉破损的管道错误

来自分类Dev

R:过滤掉数据框中的非数值

来自分类Dev

过滤掉加载到维度中的数据

来自分类Dev

如何从数组中过滤掉非日语字符?

来自分类Dev

发出从输出中过滤掉某些事件日志的问题

来自分类Dev

如何从计数不同的查询中过滤掉

来自分类Dev

以最佳性能过滤掉CosmosDB查询中的数组项

来自分类Dev

使用Pandas过滤掉特定列中的值

来自分类Dev

过滤掉ftrace中的某些进程和/或PID?

来自分类Dev

从标准输入中过滤掉某些字符串

来自分类Dev

如何使用grep或sed过滤掉html中的链接?

Related 相关文章

热门标签

归档