我已经浏览了Ruby on Rails指南,但似乎无法弄清楚如何防止某人删除具有子项的父记录。例如。如果我的数据库有客户CUSTOMERS 并且每个客户可以有多个 ORDERS ,那么我想阻止某人删除客户(如果该客户在数据库中有订单)。他们只能删除没有订单的客户。
定义模型之间的关联以强制执行此行为时,有没有办法?
最佳答案
您可以在回调中执行此操作:
class Customer < ActiveRecord::Base
has_many :orders
before_destroy :check_for_orders
private
def check_for_orders
if orders.count > 0
errors.add_to_base("cannot delete customer while orders exist")
return false
end
end
end
编辑
请参阅this answer,以获得更好的方法。
关于ruby-on-rails - 如果有子记录,如何防止删除父记录?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4054112/