module Wallaby::Baseable::ClassMethods

Configurable attributes:

  1. mark a class as a base class

  2. guess the model class if model class isn't given

Attributes

namespace[W]

@!attribute [w] namespace Used by `model_class` @since wallaby-5.2.0

Public Instance Methods

base_class() click to toggle source

@!attribute [r] base_class @return [Class] The base class or the one from super class

# File lib/concerns/wallaby/baseable.rb, line 60
def base_class
  @base_class || superclass.try(:base_class)
end
base_class!() click to toggle source

Mark the current class as the base class

# File lib/concerns/wallaby/baseable.rb, line 54
def base_class!
  @base_class = self
end
base_class?() click to toggle source

@return [true] if class is a base class @return [false] if class is not a base class

# File lib/concerns/wallaby/baseable.rb, line 49
def base_class?
  @base_class == self
end
model_class() click to toggle source

@!attribute [r] model_class @example To configure the model class

class Admin::ProductAuthorizer < Admin::ApplicationAuthorizer
  self.model_class = Product
end

@example To configure the model class for version below 5.2.0

class Admin::ProductAuthorizer < Admin::ApplicationAuthorizer
  def self.model_class
    Product
  end
end

@return [Class] assigned model class or Wallaby will guess it

(see {Wallaby::Baseable.guess_associated_class_of .guess_associated_class_of})

@return [nil] if current class is marked as base class @raise [Wallaby::ModelNotFound] if model class isn't found @raise [ArgumentError] if base class is empty

# File lib/concerns/wallaby/baseable.rb, line 87
      def model_class
        return if base_class?

        @model_class ||= Baseable.guess_associated_class_of name
      rescue TypeError
        raise ArgumentError, <<~INSTRUCTION
          Please specify the base class for class `#{name}`
          by marking one of its parents `base_class!`, for example:

            class ParentClass
              base_class!
            end
        INSTRUCTION
      end
model_class=(model_class) click to toggle source

@!attribute [w] model_class

# File lib/concerns/wallaby/baseable.rb, line 65
def model_class=(model_class)
  raise ArgumentError 'Please provide a Class for `model_class`.' unless model_class.is_a? Class

  @model_class = model_class
end
namespace() click to toggle source

@!attribute [r] namespace @return [String] namespace @since wallaby-5.2.0

# File lib/concerns/wallaby/baseable.rb, line 110
def namespace
  @namespace ||=
    superclass.try(:namespace) \
      || name.deconstantize.gsub(/Wallaby(::)?/, EMPTY_STRING).presence
end