Rails - объект в отношении has_many не обновляется - PullRequest
0 голосов
/ 07 мая 2020

У меня есть таблица под названием «Группы», в которой сохраняются группы и подгруппы. Группа has_many подгруппа. Ниже приведен код:

groupone.rb (one of the main group)

    class GroupOne < BaseGroup
      belongs_to :parent, class_name: 'GroupOne'
      has_many :sub_group_one, autosave: true, dependent: :destroy, inverse_of: :groupone
    end

   reports_controller.rb

    class ReportsController < ActionController::Base

      def process_report
        current_record = load_from_xml(xml_path)
        current_group = current_record.last
        base_report_group = find_or_create_base_group(current_group)
        process_sub_group(current_group, base_report_group)
        base_report_group.save

      end

      def process_sub_group(current_group, base_report_group)
        if current_group.sub_group_one.present?
          current_group.sub_group_one.each do |sub_group|
            sgroup = base_report_group.sub_group_one.find_or_initialize_by(group_type_id: sub_group.group_type, serial_num: sub_group.serial_num)
            sgroup.attributes = {name: "Rob", age: 12}
          end
        end
      end

    end

Приведенный выше код создает новые GroupOne и многие sub_group_one записи без каких-либо проблем, но когда я пытаюсь обновить существующие значения sub_group_one, они не получают обновлено. Например, {name: "Rob", age: 12} не обновляется ни для одной из записей подгруппы. Я заметил, что новые атрибуты присваиваются sgroup во время текущей sub_group итерации, и как только вся итерация sub_group завершена, когда я делаю binding.pry для base_report_group.sub_group_one, отображается старая запись, и это проблема .

Кто-нибудь, пожалуйста, помогите мне это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...