#ruby-on-rails #updates
#ruby-на-рельсах #Обновления
Вопрос:
Итак, представьте, что у вас есть форма для parent
, которая принимает вложенные атрибуты для child
, поэтому, когда вы обновляете parent
, rails также child_attributes
отправляет child's
идентификатор, для чего? Если я установлю parent's
идентификатор в действии обновления, найти child
по foreign_key не проблема, не так ли? Чего мне не хватает?
Ответ №1:
Вы также можете обновить children
(это то, что accepts_nested_attributes_for
делает).
Rails нужно знать, какой из дочерних элементов вы изменяете, поэтому ему нужны id
дочерние элементы.
В противном случае пришлось бы каждый раз уничтожать и перестраивать дочерние элементы.
Комментарии:
1. О, это имеет смысл, спасибо. Но как насчет ассоциаций «имеет один»?
2. Rails обрабатывает их одинаково. Для обновления дочернего элемента Rails использует
id
дочернюю запись иfields_for
генерирует скрытоеid
поле для каждого постоянного объекта. Rails также различает атрибуты для объектовnew
илиpersistent
путем проверки существованияid
. Наличиеid
для существующих объектов просто упрощает работу.