module ActiveMongoid::Associations::RecordRelation::AutoSave::ClassMethods

Public Instance Methods

autosave_record_id(metadata) click to toggle source
# File lib/active_mongoid/associations/record_relation/auto_save.rb, line 26
def autosave_record_id(metadata)
  if metadata.stores_foreign_key?
    save_method = :"autosave_record_id_for_#{metadata.name}"
    define_method(save_method) do
      if relation = instance_variable_get("@#{metadata.name}")
        self.send(metadata.foreign_key_setter, relation.send(metadata.primary_key))
      end
    end
    before_save save_method
  end
end
autosave_records(metadata) click to toggle source
# File lib/active_mongoid/associations/record_relation/auto_save.rb, line 13
def autosave_records(metadata)
  if metadata.autosave?
    save_method = :"autosave_records_for_#{metadata.name}"
    define_method(save_method) do
      if relation = instance_variable_get("@#{metadata.name}")
        Array(relation).each { |d| d.save if record_changed_for_autosave?(d) }
      end
    end
    after_save save_method
  end
  autosave_record_id(metadata)
end