module Faceted::HasObject
Public Class Methods
new(args={})
click to toggle source
Instance methods =======================================================
# 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
Public Instance Methods
delete()
click to toggle source
# File lib/faceted/has_object.rb, line 37 def delete self.success = object.delete end
excludes()
click to toggle source
# File lib/faceted/has_object.rb, line 45 def excludes @excludes ||= [] end
excludes=(value)
click to toggle source
# File lib/faceted/has_object.rb, line 41 def excludes=(value) @excludes = value.nil? ? [] : value.map(&:to_sym) end
reinitialize_with_object(obj)
click to toggle source
# 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()
click to toggle source
# 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.full_messages self.reinitialize_with_object(object) if self.success self.success end
schema_fields()
click to toggle source
# File lib/faceted/has_object.rb, line 63 def schema_fields self.class.fields - self.excludes - [:excludes] end
to_hash()
click to toggle source
# 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
Private Instance Methods
initialize_with_object()
click to toggle source
# File lib/faceted/has_object.rb, line 73 def initialize_with_object return unless object schema_fields.each{|k| self.send("#{k}=", object.send(k)) if object.respond_to?(k) && self.respond_to?("#{k}=") } end
object()
click to toggle source
# File lib/faceted/has_object.rb, line 78 def object return unless self.class.klass if self.send(find_by).present? @object ||= self.class.klass.where(find_by => self.send(find_by)).first else @object ||= self.class.klass.new end end
object=(obj)
click to toggle source
# File lib/faceted/has_object.rb, line 87 def object=(obj) @object = obj self.id = obj.id if obj.respond_to?(:id) && obj.id.present? @object end
settable_field?(field_name)
click to toggle source
# File lib/faceted/has_object.rb, line 93 def settable_field?(field_name) self.respond_to?("#{field_name}=") && object.respond_to?("#{field_name}=") end