Подтвердить что ты не робот

Отношения habtm не поддерживают: зависимый вариант

Правда ли, что отношения HABTM не поддерживают параметр :dependent?

class Person < ActiveRecord::Base
  has_and_belongs_to_many :posts, :dependent => :destroy
end

Я пытаюсь использовать рельсы.

4b9b3361

Ответ 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+ обрабатывает это уже.