def assign(value)
self.changed = true
destroy_retained! if retained?
set_uid_and_model_uid(nil)
if value.nil?
self.job = nil
reset_magic_attributes
self.class.run_callbacks(:after_unassign, model, self) if should_run_callbacks?
else
self.job = case value
when Job then value.dup
when self.class then value.job.dup
else app.new_job(value)
end
set_magic_attributes
job.url_attrs = all_extra_attributes
self.class.run_callbacks(:after_assign, model, self) if should_run_callbacks?
retain! if should_retain?
end
model_uid_will_change!
value
end