【问题标题】:Volt: Equivalent of destroy_all?Volt:相当于destroy_all?
【发布时间】:2015-09-24 07:06:37
【问题描述】:

我有一个带有“重置此集合”按钮的表单。看起来像这样:

<button e-click="reset_patients">reset patients</button>

在我的控制器中,我这样做:

def reset_patients
  puts "destroying"
  store.patients.each{|p| p.destroy}
end

我期望显示列表的客户端将显示一个空列表。实际发生的情况是,部分但不是所有项目都被删除了。

如何在持久支持的存储(即:model :store)上处理“将整个集合转储到垃圾桶”操作?另外,有没有办法通过相关集合使这些级联?

【问题讨论】:

    标签: crud voltrb


    【解决方案1】:

    我们还没有 .destroy_all。它在我的短名单上,但我正在修改数据提供者 API 中的一件事以使其更智能。现在你可以做

    store.patients.reverse.each(&:destroy)
    

    (需要 .reverse,因为您在循环时会删除数组对象)

    【讨论】:

    • 当您正在迭代集合时,这种事情在任务中会更好吗?如果是这样,它会像这样运行吗:控制器中的DeleteTask.destroy_all(store.p) 和任务的destroy_all 方法中的p.reverse.each(&amp;:destroy)
    • 我认为将它移动到模型层对我来说会更好,然后模型可以在您执行 .destroy_all 时将其发送到内部任务(另外,我可以让它工作直接查询)
    • 我希望它是原子的。以前的迭代方法对其他客户端产生了奇怪的影响,因为它们会收到每次删除的通知。
    • 是的,这就是为什么它需要在模型级别的部分原因。它将在 sql 数据提供程序中是原子的。
    猜你喜欢
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多