Module: Faceted::HasObject
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
- #delete ⇒ Object
- #excludes ⇒ Object
- #excludes=(value) ⇒ Object
-
#initialize(args = {}) ⇒ Object
Instance methods =======================================================.
- #reinitialize_with_object(obj) ⇒ Object
- #save ⇒ Object
- #schema_fields ⇒ Object
- #to_hash ⇒ Object
Instance Method Details
#delete ⇒ Object
37 38 39 |
# File 'lib/faceted/has_object.rb', line 37 def delete self.success = object.delete end |
#excludes ⇒ Object
45 46 47 |
# File 'lib/faceted/has_object.rb', line 45 def excludes @excludes ||= [] end |
#excludes=(value) ⇒ Object
41 42 43 |
# File 'lib/faceted/has_object.rb', line 41 def excludes=(value) @excludes = value.nil? ? [] : value.map(&:to_sym) end |
#initialize(args = {}) ⇒ Object
Instance methods =======================================================
25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/faceted/has_object.rb', line 25 def initialize(args={}) self.excludes = args.delete('excludes') || args.delete(:excludes) unless args.empty? self.id = args[:id] args.symbolize_keys.delete_if{|k,v| v.nil?}.each{|k,v| self.send("#{k}=", v) if self.respond_to?("#{k}=") && ! v.nil? } initialize_with_object args.symbolize_keys.delete_if{|k,v| v.nil?}.each{|k,v| self.send("#{k}=", v) if self.respond_to?("#{k}=") && ! v.nil? } end self.errors = [] self.success = true end |
#reinitialize_with_object(obj) ⇒ Object
49 50 51 52 |
# File 'lib/faceted/has_object.rb', line 49 def reinitialize_with_object(obj) obj.reload schema_fields.each{ |k| self.send("#{k}=", obj.send(k)) if obj.respond_to?(k) && self.send(:settable_field?, k) } end |
#save ⇒ Object
54 55 56 57 58 59 60 61 |
# File 'lib/faceted/has_object.rb', line 54 def save return false unless schema_fields.present? schema_fields.each{ |k| self.send(:object).send("#{k}=", self.send(k)) if self.send(:settable_field?, k) } self.success = object.save self.errors = object.errors && object.errors. self.reinitialize_with_object(object) if self.success self.success end |
#schema_fields ⇒ Object
63 64 65 |
# File 'lib/faceted/has_object.rb', line 63 def schema_fields self.class.fields - self.excludes - [:excludes] end |
#to_hash ⇒ Object
67 68 69 |
# File 'lib/faceted/has_object.rb', line 67 def to_hash schema_fields.inject({}) {|h,k| h[k] = self.send(k) if self.respond_to?(k); h} end |