class User < ApplicationRecord has_many :work_experiences has_many :skills has_many :education_entries has_many :cover_letters def clone!(label:) self.class.transaction do cloned_user = dup cloned_user.label = label cloned_user.save! self.class.reflect_on_all_associations(:has_many).each do |association| next if association.options[:through] public_send(association.name).find_each do |record| cloned_record = record.dup cloned_record[association.foreign_key] = cloned_user.id cloned_record.save! end end cloned_user end end end