【问题标题】:acts_as_list with paranoia gem带有偏执狂宝石的acts_as_list
【发布时间】:2017-05-05 18:19:39
【问题描述】:

我有两个模型。第一个 ModelA 是 ModelB 的父级。即ModelA has_many ModelB。 [当modelA被销毁时,其所有依赖的ModelB也因依赖销毁而被销毁 现在我有了acts_as_paranoid 范围::ModelA

有了这个,我还为模型 A 和 B 设置了acts_as_paranoid。

现在,当我销毁 ModelA 时,我不想在 ModelB 记录被销毁时调用 ModelB 中的回调。

特别是,ModelB 有一个称为位置的属性,当 ModelA 被破坏导致 ModelB 的位置属性发生变化时,它会更新。 我不想改变位置,这样我就可以安全地恢复 ModelA 并使用与之前存在的 ModelB 相同的记录和属性。

谢谢。

【问题讨论】:

  • 你能分享你的模型回调吗?
  • 每当模型B 上调用destroy 时,acts_as_list 都会隐式调用回调。 github.com/swanandp/acts_as_list/blob/master/lib/acts_as_list/… 这里函数 'decrement_positions_on_higher_items' 被隐式调用,这会将所有后续 modelB 记录的位置递减 1
  • 这应该很方便disabling temporarily github.com/swanandp/acts_as_list/blob/master/…
  • 你有没有调查过让ModelB也变得偏执?那应该绕过它的正常销毁程序吗?我不是 100% 确定,但我认为它应该是这样工作的。在我的应用程序中,我没有将任何这些宝石用于该功能。我只有一些方法可以调用来“回收”和“恢复”一个项目,然后销毁功能永远不会被调用。然后,您可以使用范围默认隐藏这些“已删除”记录。

标签: ruby-on-rails acts-as-list acts-as-paranoid


【解决方案1】:

根据readme

ModelB.acts_as_list_no_update do
  modela_instance.destroy
end

这应该可行。我希望我可以测试它,不幸的是没有这样的设置。让我知道是否有任何问题。 希望对你有帮助。。


更新:在 cmets 中适用于这种情况的语法。

ModelB.acts_as_list_no_update([ModelB]) do
  modela_instance.destroy
end

【讨论】:

  • 嗨,法尔汉,这实际上只需要稍作改动。我不得不将acts_as_list 更新到最新版本。模型B.acts_as_list_no_update [模型B] {}
  • @AdilHussain 我将不胜感激,因为它有效。
  • @Farhan,对不起,我忘了。感谢您的回答。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-18
  • 1970-01-01
  • 1970-01-01
  • 2021-04-04
  • 2013-12-09
相关资源
最近更新 更多