我有貨件和發票。Rails 3. before_destroy驗證以防止刪除父記錄
發票屬於裝運
裝運有一個發票
如果貨物確實有發票,則該貨物應不能夠被刪除。我需要在模型中進行設置,因爲我使用的是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
但我只是得到一個黃色的消息說「貨不能刪除」,但它實際上刪除。
如何防止裝運被刪除?
啊,沒錯!我忘了回覆錯誤。我還發布了這部分代碼錯誤,如果invoice.nil ?,它應該是',除非invoice.nil?'。 – leonel 2012-01-11 19:51:53
我對這種邏輯很好奇 - 但認爲它可能只是你在做的事情。我會更新我的答案,以便與後代的緣故相匹配。 – 2012-01-11 20:07:47
檢查[對類似問題的此答案](http://stackoverflow.com/a/10257516/703233)爲更好的方法來執行此操作。 – nitsas 2016-04-06 09:49:34