1

ユーザーがプロジェクトを作成できるRailsアプリに取り組んでいます。ユーザーには2つのタイプがあり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を使用しています。

どうすればこれを解決できますか?

4

1 に答える 1

4

プロジェクトの関連付けが表示されないので、次の2つの方法のいずれかで実行できると思います。

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 に答える