module RESTinPeace::ActiveModelAPI

Public Class Methods

check_for_missing_methods(base) click to toggle source
# 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) click to toggle source
# 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

Public Instance Methods

create_with_dirty_tracking() click to toggle source
# 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
errors() click to toggle source
# File lib/rest_in_peace/active_model_api.rb, line 66
def errors
  @errors ||= ActiveModel::Errors.new(self)
end
errors=(new_errors) click to toggle source
# File lib/rest_in_peace/active_model_api.rb, line 70
def errors=(new_errors)
  new_errors.each do |field, errors|
    errors.each do |error|
      self.errors.add(field.to_sym, error)
    end
  end
end
persisted?() click to toggle source
# File lib/rest_in_peace/active_model_api.rb, line 58
def persisted?
  !!id
end
read_attribute_for_validation(attr) click to toggle source
# File lib/rest_in_peace/active_model_api.rb, line 62
def read_attribute_for_validation(attr)
  send(attr)
end
save_with_dirty_tracking() click to toggle source
# 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
update(attributes) click to toggle source
# File lib/rest_in_peace/active_model_api.rb, line 49
def update(attributes)
  update_attributes(attributes)
  save
end
valid?() click to toggle source
# File lib/rest_in_peace/active_model_api.rb, line 54
def valid?
  !errors.any?
end