module ActivityNotification::Common

Common module included in target and notifiable model. Provides methods to resolve parameters from configured field or defined method. Also provides methods to convert into resource name or class name as string.

Public Instance Methods

printable_name() click to toggle source

Convets to printable model name to show in view or email. @return [String] Printable model name

# File lib/activity_notification/common.rb, line 138
def printable_name
  "#{self.printable_type} (#{id})"
end
printable_type() click to toggle source

Convets to printable model type name to be humanized. @return [String] Printable model type name @todo Is this the best to make readable?

# File lib/activity_notification/common.rb, line 132
def printable_type
  "#{self.to_class_name.demodulize.humanize}"
end
resolve_value(thing, *args) click to toggle source

Used to transform value from metadata to data which belongs model instance. Accepts Symbols, which it will send against this instance, Accepts Procs, which it will execute with this instance. Both Symbols and Procs will be passed arguments of this method. Also accepts Hash of these Symbols or Procs. If any other value will be passed, returns original value.

@param [Symbol, Proc, Hash, Object] thing Symbol or Proc to resolve parameter @param [Array] args Arguments to pass to thing as method @return [Object] Resolved parameter value

# File lib/activity_notification/common.rb, line 76
def resolve_value(thing, *args)
  case thing
  when Symbol
    symbol_method = method(thing)
    if symbol_method.arity > 0
      if args.last.kind_of?(Hash)
        symbol_method.call(*args[0...-1], **args[-1])
      else
        symbol_method.call(*args)
      end
    else
      symbol_method.call
    end
  when Proc
    if thing.arity > 1
      thing.call(self, *args)
    elsif thing.arity > 0
      thing.call(self)
    else
      thing.call
    end
  when Hash
    thing.dup.tap do |hash|
      hash.each do |key, value|
        hash[key] = resolve_value(value, *args)
      end
    end
  else
    thing
  end
end
to_class_name() click to toggle source

Convets to class name. This function returns base_class name for STI models if the class responds to base_class method. @see github.com/simukappu/activity_notification/issues/89 @see github.com/simukappu/activity_notification/pull/139 @return [String] Class name

# File lib/activity_notification/common.rb, line 113
def to_class_name
  self.class.respond_to?(:base_class) ? self.class.base_class.name : self.class.name
end
to_resource_name() click to toggle source

Convets to singularized model name (resource name). @return [String] Singularized model name (resource name)

# File lib/activity_notification/common.rb, line 119
def to_resource_name
  self.to_class_name.demodulize.singularize.underscore
end
to_resources_name() click to toggle source

Convets to pluralized model name (resources name). @return [String] Pluralized model name (resources name)

# File lib/activity_notification/common.rb, line 125
def to_resources_name
  self.to_class_name.demodulize.pluralize.underscore
end