私のアプリには、ユーザー、ロール、権限があります。Railsの破壊時に結合テーブルレコードを削除する
ロールを削除すると、そのロールに関連付けられているすべてのユーザーと権限がジョインテーブルで削除されます。 私はユーザーまたは権限を削除したくありません。
class Role < ActiveRecord::Base
has_and_belongs_to_many :users, :join_table => 'users_roles'
has_and_belongs_to_many :permissions, :join_table => 'roles_permissions'
end
ドキュメントを見ると、あなたは:dependant
を使用することができますが、それは同様に、関連するレコードを破壊することになります。しかし、私は結合レコードを破壊したいだけです。
私がやって考えていた:
after_destroy :remove_associated_users
after_destroy :remove_associated_permissions
def remove_associated_users
connection = ActiveRecord::Base.connection
connection.execute("DELETE FROM users_roles WHERE role_id = " + self.id.to_s)
end
def remove_associated_permissions
connection = ActiveRecord::Base.connection
connection.execute("DELETE FROM roles_permissions WHERE role_id = " + self.id.to_s)
end