【问题标题】:Delete Children rails 4删除子导轨 4
【发布时间】:2016-03-04 00:41:01
【问题描述】:

我有班级项目,

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

我想删除所有子项目,如果我删除父项目,在这种情况下意味着如果我删除项目(父项目)必须删除所有用户(孩子)和子项目(孩子)。

我可以通过用户 dependent: :delete_all 添加,但我不知道如何使用acts_as_tree

谢谢

【问题讨论】:

  • 您可能也应该将树关系定义为关联! has_many :children, class_name: 'Project', dependent: :destroy, foreign_key: "parent_id"(检查foreign_key的名称)

标签: ruby-on-rails-4 acts-as-tree


【解决方案1】:

尝试使用dependent: :destroy like:-

has_many :users, dependent: :destroy

【讨论】:

  • 我知道我如何为用户做,我不知道我如何为acts_as_tree做这个!请阅读问题
【解决方案2】:

act_as_tree 默认行为会在您销毁 parent 时自动销毁 children,如您在源代码中所见 (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 的回答实际上是正确的。

干杯!

【讨论】:

    猜你喜欢
    • 2015-03-28
    • 2019-11-26
    • 2018-11-17
    • 2014-04-29
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 2014-10-13
    • 2015-10-25
    相关资源
    最近更新 更多