首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails - Globalize和Permanent_record依赖::销毁回调

Rails - Globalize和Permanent_record依赖::销毁回调
EN

Stack Overflow用户
提问于 2017-12-05 09:07:51
回答 2查看 586关注 0票数 3

在Rails 4.2项目中,我使用gem 'permanent_records'处理记录、软删除和翻译的gem 'globalize'

全球化设置了翻译模型和翻译模型(来源)之间的下列关系:

代码语言:javascript
复制
has_many :translations, :class_name  => translation_class.name,
                                :foreign_key => options[:foreign_key],
                                :dependent   => :destroy,
                                :extend      => HasManyExtensions,
                                :autosave    => true,
                                :inverse_of  => :globalized_model

其结果是,在已翻译的模型上调用:destroy并不会删除它(这就是permanent_records的用途),但是我丢失了相关的翻译,我希望保持它的活力。

我是否应该仅对某些已翻译的模型(在我使用permanent_records的已翻译模型)上重写dependent: :destroy回调?如何做好呢?

还有其他方法可以得到预期的结果吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-05 11:03:22

最后,我通过向deleted_at模型(在我的例子中是Treatment::Translation)添加一个GlobalizedModel::Translation属性来解决这个问题,这样也可以软删除翻译。

票数 1
EN

Stack Overflow用户

发布于 2017-12-05 09:34:40

处理这件事的方法很多。我不建议覆盖依赖::破坏。

  1. 通过使用偏执狂gem来处理它的最佳方法,这是acts_as_paranoid的一个重新实现。此创业板负责软删除与相关的破坏选项。参考:https://github.com/rubysherpas/paranoia
  2. 像这样覆盖回调 def销毁run_callbacks :在这里销毁#您的代码以销毁结束
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47649748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档