habtm отношения не поддерживает: зависимый вариант
Верно ли, что отношения HABTM не поддерживают опцию :dependent?
class Person < ActiveRecord::Base
has_and_belongs_to_many :posts, :dependent => :destroy
end
Я пробую рельсы края.
3 ответа:
Да, это не поддерживает его. смотрите документы . Обычно
habtmпредназначено только для очень простых случаев, и если вы начинаете нуждаться в более сложных вещах, вы должны переключиться наhas_many :through.
Если вы хотите придерживаться простой ассоциации
has_and_belongs_to_many, Вы можете добавить следующее:class Person < ActiveRecord::Base has_and_belongs_to_many :posts before_destroy { posts.clear } end, который очистит объединенную таблицу от всех записей этого
person. Примечание: это только удаляет записи из таблицы join, но не уничтожаетposts(что имеет смысл, если это двунаправленныйhas_and_belongs_to_many, потому что наpostмогут ссылаться другиеpersons).Но угадывая по вашим именам (
PersonиPost), я бы предположил, что вам, вероятно, сойдет с рукPerson has_many :postsиPost belongs_to :personв этом случае вы можете использовать:dependent => :destroyв ассоциацииhas_many.