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