Module: MongoMapper::Denormalization::ClassMethods
- Defined in:
- lib/mongo_mapper/denormalization.rb
Instance Method Summary collapse
- #denormalize(association, field, options = {}) ⇒ Object
- #denormalize_associations(*destinations) ⇒ Object (also: #denormalize_association)
- #denormalize_field(association, field, options = {}) ⇒ Object
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, ={}) association = association.to_sym field = field.to_sym validation_method = [:method] || :before_validation validation_method_params = .slice(*VALID_OPTIONS_FOR_VALIDATE) source_field_code = [:source_field] || :"#{association}.#{field}" target_field_code = [:target_field] || :"#{association}_#{field}" is_association = [:is_association] reflect_updates = .has_key?(:reflect_updates) ? [: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) = destinations.last.is_a?(Hash) ? destinations.pop.dup : {} source = .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()) end end |
#denormalize_field(association, field, options = {}) ⇒ Object
15 16 17 |
# File 'lib/mongo_mapper/denormalization.rb', line 15 def denormalize_field(association, field, ={}) denormalize(association, field, ) end |