Class: Creators::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/creators/creator.rb

Defined Under Namespace

Classes: ErrorInParams

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(raw_params = {}, model = nil) ⇒ Base

Returns a new instance of Base.



44
45
46
47
48
# File 'lib/creators/creator.rb', line 44

def initialize(raw_params = {}, model = nil)
  @params = raw_params
  @model  = model
  @errors = {}
end

Class Method Details

.inherited(child_class) ⇒ Object



27
28
29
30
31
32
# File 'lib/creators/creator.rb', line 27

def self.inherited(child_class)
  child_class.class_eval do
    class_name = child_class.to_s.gsub('Creator', '')
    self.model(class_name)
  end
end

.model(class_name) ⇒ Object



34
35
36
37
38
39
40
41
42
# File 'lib/creators/creator.rb', line 34

def self.model(class_name)
  define_method :klass do
    class_name.constantize
  end

  define_method class_name.underscore do
    model
  end
end

Instance Method Details

#error(field, text) ⇒ Object

Raises:



71
72
73
74
# File 'lib/creators/creator.rb', line 71

def error(field, text)
  @errors[field] = text
  raise ErrorInParams.new("#{field}: #{text}")
end

#errorsObject



65
66
67
68
69
# File 'lib/creators/creator.rb', line 65

def errors
  e = @errors
  return e.merge(@model.errors()) if @model.present? and @model.errors().present?
  e
end

#modelObject



61
62
63
# File 'lib/creators/creator.rb', line 61

def model
  @model
end

#saveObject



50
51
52
53
54
55
56
57
58
59
# File 'lib/creators/creator.rb', line 50

def save
  build
  before_save
  return false unless @model.save
  after_save
  true
rescue ErrorInParams => e
  Log.error(e)
  false
end