module Mongoid::Denormalize::ClassMethods

Public Instance Methods

denormalize(*args) click to toggle source
# File lib/mongoid-denormalize.rb, line 10
def denormalize(*args)
  *fields, options = args

  unless options.is_a?(Hash) && options[:from]
    raise ArgumentError, 'Option :from is needed (e.g. denormalize :name, from: :user).'
  end

  fields = Mongoid::Denormalize.get_fields_with_names(self, fields, options)

  # Add fields to model
  fields.each { |field| field field[:as], type: field[:type] }

  # Add hooks
  Mongoid::Denormalize.add_hook_to_child(self, fields, options)
  Mongoid::Denormalize.add_hook_to_parent(self, fields, options)
end