11

ユーザーが多くの役割を持ち、所属している関連付けがあるとします。ユーザーを破棄すると、結合テーブルのレコードも自動的に削除されますか?または、:dependent =>:destroyを使用する必要がありますか?ロールを破棄した場合はどうなりますか?

class User < ActiveRecord::Base
   has_and_belong_to_many :roles # need to use :dependent => :destroy to remove join record?
end

class Role < ActiveRecord::Base
   has_and_belong_to_many :users # need to use :dependent => :destroy to remove join record?
end
4

2 に答える 2

10

結合テーブルのエントリは削除されますが、ロールまたはユーザーは削除されません。has_and_belongs_to_manyに依存するdestroy句を追加することはできませんが、必要に応じて、結合モデルのリレーションに追加することができます。たとえば、関連付けられた結合テーブルエントリが削除されたときにロールを破棄するには、次のようにします。

class RolesUser < ActiveRecord::Base
  belongs_to :role, :dependent => :destroy
  belongs_to :user
end
于 2011-02-16T17:21:52.910 に答える
0

確認済み-ユーザーまたはロールを削除すると、そのユーザー/ロールとの結合テーブル内のすべてのレコードも削除されます

于 2016-04-04T00:30:47.303 に答える