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
- #errors ⇒ Object
- #errors=(new_errors) ⇒ Object
- #persisted? ⇒ Boolean
- #read_attribute_for_validation(attr) ⇒ Object
- #save_with_dirty_tracking ⇒ Object
Class Method Details
.check_for_missing_methods(base) ⇒ Object
43 44 45 46 |
# File 'lib/rest_in_peace/active_model_api.rb', line 43 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
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 40 41 |
# File 'lib/rest_in_peace/active_model_api.rb', line 12 def self.included(base) check_for_missing_methods(base) base.send(:include, ActiveModel::Dirty) base.send(:include, ActiveModel::Conversion) base.extend ActiveModel::Naming base.send(:alias_method, :save_without_dirty_tracking, :save) base.send(:alias_method, :save, :save_with_dirty_tracking) base.send :define_attribute_methods, base.rip_attributes[:write] base.rip_attributes[:write].each do |attribute| base.send(:define_method, "#{attribute}_with_dirty_tracking=") do |value| attribute_will_change!(attribute) unless send(attribute) == value send("#{attribute}_without_dirty_tracking=", value) end base.send(:alias_method, "#{attribute}_without_dirty_tracking=", "#{attribute}=") base.send(:alias_method, "#{attribute}=", "#{attribute}_with_dirty_tracking=") end def base.human_attribute_name(attr, = {}) attr.to_s end def base.lookup_ancestors [self] end end |
Instance Method Details
#errors ⇒ Object
62 63 64 |
# File 'lib/rest_in_peace/active_model_api.rb', line 62 def errors @errors ||= ActiveModel::Errors.new(self) end |
#errors=(new_errors) ⇒ Object
66 67 68 69 70 |
# File 'lib/rest_in_peace/active_model_api.rb', line 66 def errors=(new_errors) new_errors.each do |key, value| errors.set(key.to_sym, [value].flatten) end end |
#persisted? ⇒ Boolean
54 55 56 |
# File 'lib/rest_in_peace/active_model_api.rb', line 54 def persisted? !!id end |
#read_attribute_for_validation(attr) ⇒ Object
58 59 60 |
# File 'lib/rest_in_peace/active_model_api.rb', line 58 def read_attribute_for_validation(attr) send(attr) end |
#save_with_dirty_tracking ⇒ Object
48 49 50 51 52 |
# File 'lib/rest_in_peace/active_model_api.rb', line 48 def save_with_dirty_tracking save_without_dirty_tracking.tap do @changed_attributes.clear if @changed_attributes end end |