2016-06-14 6 views
0

Моя текущая Cocoon/вложенная форма работает очень хорошо. Однако я хотел бы изменить это поведение:Rails + Cocoon: обновить вложенный ресурс вместо его уничтожения

Главная модель:

accepts_nested_attributes_for :varietals, :reject_if => lambda { |a| a[:grape_id].blank? && a[:id].blank? }, allow_destroy: true 

Вместо того, чтобы удалить объект сортовой с allow_destroy, я хочу, чтобы обновить поле состояния до 0, когда он будет уничтожен.

Можно ли вызвать функцию в этой строке, чтобы сделать это? Должен ли я обновить модель varietal?

Что-то вроде:

varietal.update_attributes(:status => 0) 

когда один вложенный ресурс удаляется пользователем.

Спасибо.

EDIT: после данных после редактирования главной формы и удаление вложенного сортового, чтобы помочь:

"varietals_attributes"=>{"0"=>{"grape_attributes"=>{"id"=>"168"}, "grape_id"=>"168", "percent"=>"20", "_destroy"=>"1", "id"=>"32709368-3496-47EA-A386-B1CCECA0BAEF"}}, 

ответ

0

Из того, что я помню о coocoon, он просто добавляет атрибут _destroy к объекту хэша, поэтому я думаю, что вы можете просто обработать его в обратном вызове на своей модели varietal и удалить allow_destroy: true.

+0

Если я добавлю такой обратный вызов before_destroy в varietal model, я могу изменить поле состояния, но он сразу же уничтожит объект, не так ли? Я отредактировал мое сообщение, чтобы опубликовать данные, обновленные после уничтожения. –

+0

Если вы удалите 'allow_destroy', он не будет помечать объект для уничтожения. – PoloniculMov

+0

Я сделал это, но мой callback не вызывается в varietals model (и кажется логичным). –