You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
645 B
26 lines
645 B
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
|
|
|