我已经浏览了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/

10-13 04:47