我正在开发一个用户可以创建项目的Rails应用程序。有两种类型的用户Admins
和Collaborators
。管理员和协作者has_many :accounts, through: :account_users
,其中account_users是连接表。当管理员删除他们的帐户时,我还想删除他们创建的帐户及其项目,但我无法使其工作。我的模特目前看起来像这样:
class Collaborator < User
[...]
has_many :account_users
has_many :accounts, through: :account_users
[...]
end
class Admin < User
has_many :account_users
has_many :accounts, through: :account_users, :dependent => :destroy
[...]
end
class Account < ActiveRecord::Base
[...]
belongs_to :admin
has_many :account_users
has_many :collaborators, through: :account_users
[...]
end
class AccountUser < ActiveRecord::Base
belongs_to :admin
belongs_to :account
belongs_to :collaborator
end
当管理员用户删除帐户时,只删除联接表和用户表中的行,不删除他们的项目。
注意,我使用devise来处理身份验证。
我怎么解决这个问题?
答案 0 :(得分:4)
我没有看到项目协会,所以我认为你可以通过以下两种方式之一来实现:
class Account < ActiveRecord::Base
after_save :destroy_projects
private
def destroy_projects
self.projects.delete_all if self.destroyed?
end
end
或
class Account < ActiveRecord::Base
[...]
belongs_to :admin
has_many :account_users
has_many :collaborators, through: :account_users
has_many :projects, :dependent => :destroy
[...]
end