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