Module: Faceted::HasObject

Included in:
Interface, Presenter
Defined in:
lib/faceted/has_object.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#deleteObject



37
38
39
# File 'lib/faceted/has_object.rb', line 37

def delete
  self.success = object.delete
end

#excludesObject



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

#saveObject



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.full_messages
  self.reinitialize_with_object(object) if self.success
  self.success
end

#schema_fieldsObject



63
64
65
# File 'lib/faceted/has_object.rb', line 63

def schema_fields
  self.class.fields - self.excludes - [:excludes]
end

#to_hashObject



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