Удаление дочерних отношений с has_many_and_belongs_to в mongoid - PullRequest
2 голосов
/ 30 октября 2011

Я новичок в рельсах и пытаюсь выяснить ассоциации, используя Mongoid.

У меня есть модель Picture, которая может иметь много цветов, и один цвет может принадлежать многим изображениям. Запросы должны работать в обоих направлениях (т.е. Изображение -> Цвета и Цвет -> Изображения), поэтому я решил использовать ассоциацию has_many_and_belongs_to.

Class Picture
  include Mongoid::Document
  has_many_and_belongs_to :colors

Теперь тег модели

Class Color
  include Mongoid::Document
  has_many_and_belongs_to :pictures

Я бы хотел настроить его так, чтобы при удалении всех изображений, связанных с цветом, этот цвет также удалялся. Я пытался зависеть от уничтожения и удаления, но ни один из них, похоже, не работает.

p1 = Picture.new
p2 = Picture.new
c = Color.new
p1.colors.push(c)
p2.colors.push(c)

p1.delete # <-- c is still associated with p2. This should not delete c
p2.delete # <-- c has no more associations. It should automatically be deleted now

Может ли это быть автоматически обработано рельсами? Если нет, как я могу написать коллбэки удаления / уничтожения, чтобы это произошло?

...