Class: MailManager::ContactableRegistry

Inherits:
Object
  • Object
show all
Defined in:
app/models/mail_manager/contactable_registry.rb

Defined Under Namespace

Modules: Contactable

Constant Summary collapse

@@contactable_things =
{}

Class Method Summary collapse

Class Method Details

.contactable_method(classname, method) ⇒ Object



24
25
26
# File 'app/models/mail_manager/contactable_registry.rb', line 24

def self.contactable_method(classname,method)
  @@contactable_things[classname][method] || method
end

.edit_route_for(classname) ⇒ Object



28
29
30
31
# File 'app/models/mail_manager/contactable_registry.rb', line 28

def self.edit_route_for(classname)
  return @@contactable_things[classname][:edit_route] if @@contactable_things[classname][:edit_route].present?
  "edit_#{classname.underscore}_path"
end

.register_contactable(classname, methods = {}) ⇒ Object



5
6
7
8
9
# File 'app/models/mail_manager/contactable_registry.rb', line 5

def self.register_contactable(classname, methods={})
  @@contactable_things.merge!(classname => methods)
  Rails.logger.warn "Registered Contactable: #{classname}"
  Rails.logger.debug "Current Contactables: #{@@contactable_things.inspect}"
end

.registered_methods(classname = nil) ⇒ Object



11
12
13
14
15
16
17
18
# File 'app/models/mail_manager/contactable_registry.rb', line 11

def self.registered_methods(classname=nil)
  return @@contactable_things[classname.to_s].keys unless classname.nil?
  all_methods = {}
  @@contactable_things.values.each do |methods|
    all_methods.merge!(methods)
  end
  all_methods.keys.reject{|key| key.to_s.eql?('edit_route')}
end

.valid_contactable_substitutions(classname = nil) ⇒ Object



20
21
22
# File 'app/models/mail_manager/contactable_registry.rb', line 20

def self.valid_contactable_substitutions(classname=nil)
  registered_methods(classname).collect{|key| key.to_s.upcase}
end