【发布时间】:2014-05-28 15:30:58
【问题描述】:
在 Ruby on Rails 4 中,假设父母有很多孩子。当父级被删除时,子级也必须被删除。除此之外,除非是孤儿,否则不得删除该孩子。该怎么做?
我尝试了以下
class Parent < ActiveRecord::Base
has_many :children, inverse_of: :parent, dependent: :destroy
end
class Child < ActiveRecord::Base
belongs_to :parent, inverse_of: :children
before_destroy :checks
private
def checks
not parent # true if orphan
end
end
但是,使用 before_destroy 检查,不会删除任何内容。如果被调用的原因是因为父删除,有什么方法可以告诉这个方法?
这是一个奇怪的要求吗?我的意思是,防止删除孩子。
【问题讨论】:
-
除非您的应用程序包含直接删除子级的代码,否则应该无法直接删除它们,同时仍然可以在删除父级时删除它们。我不明白你是如何遇到这个问题的。你能说得更具体点吗?
-
你是对的。谢谢。
标签: ruby-on-rails-4 has-and-belongs-to-many dependent-destroy