Добавление связанных записей при обновлении записи рельсов - PullRequest
0 голосов
/ 13 июня 2018
 def upload_new_incident_attachments
    @attachments.each do |attachment|
        if record.new_record?
          record.images.build(attachment: attachment)
        else
          record.images.create(attachment: attachment)
        end
    end
end

Сборка связанных записей будет автоматически сохранена, если будет создана родительская модель (при сохранении), Дочерние атрибуты не будут сохранены, если есть ошибки проверки (как в дочернем, так и в родительском), я незнать, как справиться с этим при обновлении родительской модели,

def update
   if record.update_attributes(incident_params)
     upload_new_record_attachments if @attachments
   end
end

Если при создании дочерней записи возникают ошибки проверки, родительская модель уже обновлена, есть ли способ обновить обе в одной фиксации (создатьдочерняя запись и обновление родительской записи), либо любыми другими способами

1 Ответ

0 голосов
/ 13 июня 2018

Перед построением или созданием дочерних ассоциаций можно проверить, является ли его родительская модель

def update
  # Assign attributes to the parent model
  record.assign_attributes(incident_params)

  if record.valid?
    # Builds or creates images only when there are no validation errors
    upload_new_record_attachments if @attachments

    # Now you can save it and make sure there won't be any validation errors
    record.save
  end
end
...