class ActiveNull::NullModelBuilder

Attributes

model[R]
overrides[R]

Public Class Methods

new(model, overrides) click to toggle source
# File lib/active_null/null_model_builder.rb, line 7
def initialize(model, overrides)
  @model = model
  @overrides = overrides
end

Public Instance Methods

applied_decorators() click to toggle source
# File lib/active_null/null_model_builder.rb, line 71
def applied_decorators
  []
end
blank?() click to toggle source
# File lib/active_null/null_model_builder.rb, line 50
def blank?
  true
end
build() click to toggle source
# File lib/active_null/null_model_builder.rb, line 12
def build
  model = self.model
  null = Naught.build do |config|
    config.impersonate model

    model.reflect_on_all_associations.each do |relation|
      klass = begin
        if relation.options[:polymorphic]
          model.polymorphic_null_defaults[relation.name].constantize
        else
          relation.klass
        end
      rescue
        nil
      end
      next unless klass
      if relation.collection?
        define_method(relation.name) { klass.none }
      else
        define_method(relation.name) do
          return unless klass.respond_to? :null
          klass.null
        end
      end
    end

    model.column_defaults.each do |field, default|
      define_method(field.to_sym) { default }
    end

    def nil?
      true
    end

    def present?
      false
    end

    def blank?
      true
    end

    def to_json
      '{}'
    end

    if Object.const_defined? 'Draper'
      def decorate(options = {})
        decorator_class.decorate(self, options)
      end

      def decorator_class
        self.class.decorator_class
      end

      def decorator_class?
        self.class.decorator_class?
      end

      def applied_decorators
        []
      end

      def decorated_with?(decorator_class)
        false
      end

      def decorated?
        false
      end
    end
  end
  null.send(:include, Draper::Decoratable) if Object.const_defined? 'Draper'
  null.send(:include, overrides) if overrides
  set_null_model null
end
decorate(options = {}) click to toggle source
# File lib/active_null/null_model_builder.rb, line 59
def decorate(options = {})
  decorator_class.decorate(self, options)
end
decorated?() click to toggle source
# File lib/active_null/null_model_builder.rb, line 79
def decorated?
  false
end
decorated_with?(decorator_class) click to toggle source
# File lib/active_null/null_model_builder.rb, line 75
def decorated_with?(decorator_class)
  false
end
decorator_class() click to toggle source
# File lib/active_null/null_model_builder.rb, line 63
def decorator_class
  self.class.decorator_class
end
decorator_class?() click to toggle source
# File lib/active_null/null_model_builder.rb, line 67
def decorator_class?
  self.class.decorator_class?
end
full_name() click to toggle source
# File lib/active_null/null_model_builder.rb, line 94
def full_name
  return name if module_parent == Object
  "#{module_parent_name}::#{name}"
end
name() click to toggle source
# File lib/active_null/null_model_builder.rb, line 89
def name
  base_name = model.name.split('::').last
  "Null#{base_name}"
end
nil?() click to toggle source
# File lib/active_null/null_model_builder.rb, line 42
def nil?
  true
end
present?() click to toggle source
# File lib/active_null/null_model_builder.rb, line 46
def present?
  false
end
set_null_model(null) click to toggle source
# File lib/active_null/null_model_builder.rb, line 99
def set_null_model(null)
  module_parent.const_set name, null
end
to_json() click to toggle source
# File lib/active_null/null_model_builder.rb, line 54
def to_json
  '{}'
end

Private Instance Methods

module_parent() click to toggle source
# File lib/active_null/null_model_builder.rb, line 105
def module_parent
  @module_parent ||= model.try(:module_parent) || model.parent
end
module_parent_name() click to toggle source
# File lib/active_null/null_model_builder.rb, line 109
def module_parent_name
  @module_parent_name ||= model.try(:module_parent_name) || model.parent.name
end