gpt4 book ai didi

ruby-on-rails - ruby rails 3 : after destroy method to destroy object if there is no more related objects in the system?

转载 作者:行者123 更新时间:2023-12-04 06:04:28 26 4
gpt4 key购买 nike

我有一个小问题,我有以下两个模型:

class CriticalProcess < ActiveRecord::Base



has_many :authorizations, :dependent => :destroy
has_many :roles, :through => :authorizations
after_destroy :check_roles

def check roles
cp_roles = self.roles
cp_roles.each do |role|
if role.critical_processes.size == 0
role.destroy
end
end
end
end

class Role < ActiveRecord::Base

has_many :authorizations
has_many :critical_processes, :through => :authorizations

end

所以 1 个角色可以属于许多关键进程,有什么办法可以让 ALL 角色所属的关键进程被销毁,然后销毁它还有吗?我需要这个,因为如果与角色有关系的所有 CP(关键进程)都被销毁,那么该角色也应该被销毁,因为它不再需要了。

更新

我现在创建了一个应该删除角色的 after_destroy 方法,但这似乎不起作用,出于某种原因,在使用日志进行调试后,由于某种原因它没有循环遍历数组?

这是为什么?

谢谢

最佳答案

也许你可以定义after_destroy callback在 CriticalProcess 类中。在 after_destroy 中,您可以检查关联的 Role 是否具有零 CP,如果是,则删除 Role。

关于ruby-on-rails - ruby rails 3 : after destroy method to destroy object if there is no more related objects in the system?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5546001/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com