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
.