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
- #create_with_dirty_tracking ⇒ Object
- #errors ⇒ Object
- #errors=(new_errors) ⇒ Object
- #persisted? ⇒ Boolean
- #read_attribute_for_validation(attr) ⇒ Object
- #save_with_dirty_tracking ⇒ Object
- #valid? ⇒ Boolean
Class Method Details
.check_for_missing_methods(base) ⇒ Object
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_tracking ⇒ Object
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 |
#errors ⇒ Object
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
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_tracking ⇒ Object
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
49 50 51 |
# File 'lib/rest_in_peace/active_model_api.rb', line 49 def valid? !errors.any? end |