module NullAndVoid::ModelSupport::ClassMethods

Public Instance Methods

as_null_object() click to toggle source

rubocop:disable Style/ExtraSpacing

# File lib/null_and_void/model_support.rb, line 8
def as_null_object
  base_path         = NullAndVoid::Inflections.demodulize(name)
  module_path       = NullAndVoid::Inflections.deconstantize(name)
  null_object_base  = "Null#{base_path}"
  source_model_path = "#{module_path}::#{null_object_base}"

  NullAndVoid::Inflections.constantize(source_model_path).instance
rescue NameError
  NullAndVoid::NullObject.instance
end