Module: Consumerable::Model::ClassMethods

Defined in:
lib/consumerable/model.rb

Instance Method Summary collapse

Instance Method Details

#consumerable(options = {}) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/consumerable/model.rb', line 12

def consumerable(options = {})
  define_method :create_path do
    options[:path] || "/#{self.class.to_s.demodulize.downcase.pluralize}"
  end

  define_method :delete_path do
    "/#{self.class.to_s.demodulize.downcase.pluralize}/:id"
  end

  define_method :attributes_for_api do
    self.attributes
  end

  define_method :_inject_path_params do |path|
    path.scan(/:[^\/]*id/).each do |attribute|
      path.gsub!(/#{attribute}/, self.send(attribute.gsub(/^:/, '')))
    end
    path
  end

  define_singleton_method :list_path do
    options[:path] || "/#{to_s.demodulize.downcase.pluralize}"
  end

  define_singleton_method :init_collection do |collection|
    collection.map { |item| new(item) }
  end
end