Module: MongoMapper::Denormalization::ClassMethods

Defined in:
lib/mongo_mapper/denormalization.rb

Instance Method Summary collapse

Instance Method Details

#denormalize(association, field, options = {}) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/mongo_mapper/denormalization.rb', line 37

def denormalize(association, field, options={})
  association = association.to_sym
  field = field.to_sym

  validation_method = options[:method] || :before_validation
  validation_method_params = options.slice(*VALID_OPTIONS_FOR_VALIDATE)

  source_field_code = options[:source_field] || :"#{association}.#{field}"
  target_field_code = options[:target_field] || :"#{association}_#{field}"
  is_association = options[:is_association]
  reflect_updates = options.has_key?(:reflect_updates) ? options[:reflect_updates] : true

  denormalize_on_validation(association, field, validation_method, source_field_code, target_field_code, validation_method_params)
  denormalize_on_update(association, field, is_association, target_field_code) if reflect_updates
end

#denormalize_associations(*destinations) ⇒ Object Also known as: denormalize_association



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/mongo_mapper/denormalization.rb', line 19

def denormalize_associations(*destinations)
  options = destinations.last.is_a?(Hash) ? destinations.pop.dup : {}
  source = options.delete(:from)

  if !source
    raise "denormalize_association must take a from (source) option"
  end

  destinations.each do |dest|
    denormalize(source, dest, {
      :target_field => dest,
      :is_association => true
    }.merge(options))
  end
end

#denormalize_field(association, field, options = {}) ⇒ Object



15
16
17
# File 'lib/mongo_mapper/denormalization.rb', line 15

def denormalize_field(association, field, options={})
  denormalize(association, field, options)
end