2015-11-30 169 views
0

我有类项目,删除儿童导轨4

class Project < ActiveRecord::Base 
    has_many :Users 
    acts_as_tree 
end 

我想删除所有的孩子,如果我删除父,在这种情况下的意思,如果我删除的项目(父)必须全部删除用户(儿童)和子项目(儿童)。

我可以通过用户dependent: :delete_all补充,但我不知道我该怎么做acts_as_tree

感谢

+0

您应该定义树关系作为关联! 'has_many:children,class_name:'Project',dependent::destroy,foreign_key:'parent_id''(检查foreign_key的名称) –

回答

0

尝试使用相关的:破坏,如: -

has_many :users, dependent: :destroy 
+0

我知道我是如何为用户做的,我不知道我该怎么做acts_as_tree! 阅读plz问题 – Arthur

0

act_as_tree默认行为会自动破坏children当你破坏parent,你可以看到在源代码(https://github.com/amerine/acts_as_tree/blob/master/lib/acts_as_tree.rb

但是,你可以改变这种行为的具体方式,你会用has_many方法相同,例如:

act_as_tree dependent: :delete_all 
你的情况

所以,你只需要级联破坏用户:

class Project < ActiveRecord::Base 
    has_many :users, dependent: :destroy 
    acts_as_tree # dependent: :destroy 
end 

因此,@ user3506853的回答实际上是正确的,考虑到您提出问题的方式。

干杯!