gpt4 book ai didi

ruby-on-rails - Rails 3. before_destroy 验证以防止删除父记录

转载 作者:数据小太阳 更新时间:2023-10-29 06:51:12 27 4
gpt4 key购买 nike

我有发货和发票。

发票属于出货
cargo 有一张发票

如果货件确实有发票,则不应删除货件。我需要在模型中进行设置,因为我使用的是 ActiveAdmin。

所以我在 shipment.rb 中这样做了

has_one :invoice
before_destroy :check_for_invoice

private

def check_for_invoice
unless invoice.nil?
self.errors[:base] << "Cannot delete shipment while its invoice exists."
end
end

但我只是收到一条黄色消息,提示“货件无法删除”,但实际上它已被删除。

如何防止货件被删除?

最佳答案

before_destroy 回调需要一个 true/false 值来确定是否继续。

return false 添加到您的 check_for_invoice 中,如下所示:

has_one :invoice
before_destroy :check_for_invoice

private

def check_for_invoice
unless invoice.nil?
self.errors[:base] << "Cannot delete shipment while its invoice exists."
return false
end
end

关于ruby-on-rails - Rails 3. before_destroy 验证以防止删除父记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8825354/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com