Module: RESTinPeace::ActiveModelAPI

Defined in:
lib/rest_in_peace/active_model_api.rb

Defined Under Namespace

Classes: MissingMethod

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.check_for_missing_methods(base) ⇒ Object

Raises:



30
31
32
33
# File 'lib/rest_in_peace/active_model_api.rb', line 30

def self.check_for_missing_methods(base)
  raise MissingMethod, :save unless base.instance_methods.include?(:save)
  raise MissingMethod, :create unless base.instance_methods.include?(:create)
end

.included(base) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/rest_in_peace/active_model_api.rb', line 13

def self.included(base)
  check_for_missing_methods(base)

  base.send(:include, ActiveModel::Conversion)
  base.extend ActiveModel::Naming
  base.extend ActiveModel::Translation

  base.send(:alias_method, :save_without_dirty_tracking, :save)
  base.send(:alias_method, :save, :save_with_dirty_tracking)
  base.send(:alias_method, :create_without_dirty_tracking, :create)
  base.send(:alias_method, :create, :create_with_dirty_tracking)

  def base.lookup_ancestors
    [self]
  end
end

Instance Method Details

#create_with_dirty_trackingObject



42
43
44
45
46
47
# File 'lib/rest_in_peace/active_model_api.rb', line 42

def create_with_dirty_tracking
  create_without_dirty_tracking.tap do
    clear_changes if valid?
  end
  valid?
end

#errorsObject



61
62
63
# File 'lib/rest_in_peace/active_model_api.rb', line 61

def errors
  @errors ||= ActiveModel::Errors.new(self)
end

#errors=(new_errors) ⇒ Object



65
66
67
68
69
# File 'lib/rest_in_peace/active_model_api.rb', line 65

def errors=(new_errors)
  new_errors.each do |key, value|
    errors.add(key.to_sym, [value].flatten)
  end
end

#persisted?Boolean

Returns:

  • (Boolean)


53
54
55
# File 'lib/rest_in_peace/active_model_api.rb', line 53

def persisted?
  !!id
end

#read_attribute_for_validation(attr) ⇒ Object



57
58
59
# File 'lib/rest_in_peace/active_model_api.rb', line 57

def read_attribute_for_validation(attr)
  send(attr)
end

#save_with_dirty_trackingObject



35
36
37
38
39
40
# File 'lib/rest_in_peace/active_model_api.rb', line 35

def save_with_dirty_tracking
  save_without_dirty_tracking.tap do
    clear_changes if valid?
  end
  valid?
end

#valid?Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/rest_in_peace/active_model_api.rb', line 49

def valid?
  !errors.any?
end