Module: Trax::Model::ClassMethods

Defined in:
lib/trax/model.rb

Instance Method Summary collapse

Instance Method Details

#after_inherited(&block) ⇒ Object



107
108
109
# File 'lib/trax/model.rb', line 107

def after_inherited(&block)
  instance_variable_set(:@_after_inherited_block, block)
end

#mixin(key, options = {}) ⇒ Object



111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# File 'lib/trax/model.rb', line 111

def mixin(key, options = {})
  raise ::Trax::Model::Errors::MixinNotRegistered.new(
    model: self.name,
    mixin: key
  )  unless ::Trax::Model.mixin_registry.key?(key)

  mixin_module = ::Trax::Model.mixin_registry[key]
  self.registered_mixins[key] = mixin_module

  self.class_eval do
    include(mixin_module) unless self.ancestors.include?(mixin_module)

    options = {} if options.is_a?(TrueClass)
    options = { options => true } if options.is_a?(Symbol)
    mixin_module.apply_mixin(self, options) if mixin_module.respond_to?(:apply_mixin)

    if mixin_module.instance_variable_defined?(:@_after_included_block)
      block = mixin_module.instance_variable_get(:@_after_included_block)

      instance_exec(options, &block)
    end
  end
end

#mixins(*args) ⇒ Object



135
136
137
138
139
140
141
142
143
144
145
# File 'lib/trax/model.rb', line 135

def mixins(*args)
  options = args.extract_options!

  if(!options.blank?)
    options.each_pair do |key, val|
      self.mixin(key, val)
    end
  else
    args.map{ |key| mixin(key) }
  end
end

#register_trax_models(*models) ⇒ Object



147
148
149
150
151
# File 'lib/trax/model.rb', line 147

def register_trax_models(*models)
  models.each do |model|
    register_trax_model(model)
  end
end

#trax_registry_keyObject



153
154
155
# File 'lib/trax/model.rb', line 153

def trax_registry_key
  name.underscore
end