module Wallaby::Baseable::ClassMethods
Configurable attributes:
-
mark a class as a base class
-
guess the model class if model class isn't given
Attributes
@!attribute [w] namespace Used by `model_class` @since wallaby-5.2.0
Public Instance Methods
@!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
Mark the current class as the base class
# File lib/concerns/wallaby/baseable.rb, line 54 def base_class! @base_class = self end
@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
@!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
@!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
@!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