Записи в таблице соединений автоматически уничтожаются в ассоциации HABTM? - PullRequest
11 голосов
/ 16 февраля 2011

Допустим, у меня есть ассоциация, в которой Пользователь имеет и принадлежит ко многим ролям.Когда я уничтожаю пользователя, автоматически ли удаляется запись в объединяемой таблице?Или мне нужно использовать: зависимый =>: уничтожить?А что если я уничтожу роль?

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

Ответы [ 2 ]

10 голосов
/ 16 февраля 2011

Запись таблицы присоединения удалена, но роль или пользователь не удалены.Вы не можете добавить зависимое предложение уничтожения в has_and_belongs_to_many, но вы можете добавить их в отношения в вашей модели соединения, если хотите.Например, чтобы уничтожить роль при удалении соответствующей записи таблицы соединений, вы должны сделать следующее:

class RolesUser < ActiveRecord::Base
  belongs_to :role, :dependent => :destroy
  belongs_to :user
end
0 голосов
/ 04 апреля 2016

Подтверждено - при удалении пользователя или роли все записи в таблице объединения с этим пользователем / ролью также будут удалены

...