Sha256: b5f567e09d29bdd76776d8464e9cfc1cbae77bac25a8458a44264d98a4be0b24

Contents?: true

Size: 590 Bytes

Versions: 2

Compression:

Stored size: 590 Bytes

Contents

module ModelMacros
  # Create a new model
  def strict_model(klass_name, options = {}, &block)
    spawn_model klass_name do
      validates_strict_columns options
      instance_exec(&block) if block
    end
  end

  protected

  # Create a new model class
  def spawn_model(klass_name, parent_klass = ActiveRecord::Base, &block)
    Object.instance_eval { remove_const klass_name } if Object.const_defined?(klass_name)
    Object.const_set(klass_name, Class.new(parent_klass))
    Object.const_get(klass_name).class_eval(&block) if block_given?
    Object.const_get(klass_name)
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
activerecord_strict_validations-0.3.1 spec/support/macros/model_macros.rb
activerecord_strict_validations-0.3 spec/support/macros/model_macros.rb