У меня есть таблица под названием «Группы», в которой сохраняются группы и подгруппы. Группа 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
, отображается старая запись, и это проблема .
Кто-нибудь, пожалуйста, помогите мне это исправить?