1

我正在开发一个 Rails 应用程序,用户可以在其中创建项目。有两种类型的用户AdminsCollaborators. 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

当管理员用户删除其帐户时,仅删除联接表和用户表中的行,不会删除他们的项目。

请注意,我使用设计来处理身份验证。

我怎么能解决这个问题?

4

1 回答 1

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
于 2012-05-04T23:09:47.533 回答