Зависимое уничтожение не работает для класса STI

Я сталкиваюсь с проблемой при попытке уничтожить использование вложенного атрибута для классов STI в рельсах 4. например:

class A < ActiveRecord::Base
end

class B < A
  has_many :options
  accepts_nested_attributes_for :options, :allow_destroy => true
end

Когда я пытаюсь удалить параметры, которые не удаляются, событие имеет marked_for_destruction? как true, но параметр не удаляется.

У меня есть все правильные параметры, доступные как :id, :name, :_destroy.


person jbmyid    schedule 06.02.2016    source источник
comment
отлаживать. добавь binding.pry на место, где удаляешь опцию, и посмотри, что не так   -  person Andrey Deineko    schedule 06.02.2016


Ответы (1)


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

class A < ActiveRecord::Base
  has_many :options
  accepts_nested_attributes_for :options, :allow_destroy => true
end

class B < A

end

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

person jbmyid    schedule 07.02.2016