Как удалить на каскаде на Rails 2 - PullRequest
0 голосов
/ 04 октября 2011

У меня есть дизайн БД:

контракты
  • ID
  • имя
выделение
  • ID
  • имя
  • contract_id
allotments_rooms
  • ID
  • allotment_id
  • room_id
  • 1 контракт имеет 1 выделение
  • 1 выделение имеет N выделенных_ комнат

Итак ...

Contract has_one :allotment, :dependent => :delete_all
Allotment belongs_to :contract
Allotment has_many :allotments_rooms, :dependent => :delete_all
Allotments_Rooms belongs_to :allotment

Итак, когда я удаляю Контракт, Распределение полностью удаляется, а allotments_rooms - нет.

Почему?

Спасибо!

1 Ответ

2 голосов
/ 04 октября 2011

когда вы используете :dependent => :delete_all, вы уничтожаете зависимые записи без вызова их destroy метода , поэтому у них нет шансов уничтожить свои собственные связанные записи. Попробуйте :dependent => :delete вместо.

Я бы также порекомендовал использовать гем иностранца , если вы хотите установить ограничения FK на уровне БД (хотя я не знаю, работает ли он с рельсами 2)

...