Class: BoxView::Models::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/box_view/models/base.rb

Direct Known Subclasses

Document, DocumentSession

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(fields = {}, session = nil) ⇒ Base

Returns a new instance of Base.



13
14
15
16
17
18
# File 'lib/box_view/models/base.rb', line 13

def initialize(fields = {}, session = nil)
  self.session = session
  fields.each_pair do |k, v|
    self.send("#{k}=", v) if self.respond_to?("#{k}=") && !v.nil?
  end
end

Instance Attribute Details

#sessionObject

Returns the value of attribute session.



11
12
13
# File 'lib/box_view/models/base.rb', line 11

def session
  @session
end

Class Method Details

.convert_attribute(value, type) ⇒ Object



66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/box_view/models/base.rb', line 66

def convert_attribute(value, type)
  case type
  when :date
    (value.is_a?(Time) || value.is_a?(DateTime)) ? value.to_date : Date.parse(value)
  when :time
    (value.is_a?(Date) || value.is_a?(DateTime)) ? value.to_time : Time.parse(value)
  when :datetime
    (value.is_a?(Date) || value.is_a?(Time)) ? value.to_datetime : DateTime.parse(value)
  when :integer
    value.to_i
  when :string
    value.to_s
  else
    value
  end
end

.has_attributes(attributes) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
# File 'lib/box_view/models/base.rb', line 54

def has_attributes(attributes)
  attributes.each_pair do |name, options|
    attr_reader name
    define_method "#{name}=" do |value|
      if options[:readonly] && !instance_variable_get("@#{name}").nil?
        raise ReadOnlyAttribute.new(name)
      end
      write_attribute(name, self.class.convert_attribute(value, options[:type]))
    end
  end
end

Instance Method Details

#apiObject

Raises:

  • (NotImplementedError)


45
46
47
# File 'lib/box_view/models/base.rb', line 45

def api
  raise NotImplementedError.new
end

#destroyObject

Raises:



40
41
42
43
# File 'lib/box_view/models/base.rb', line 40

def destroy
  raise ResourceNotSaved.new if self.id.nil?
  api.destroy(self.id)
end

#reloadObject

Raises:



24
25
26
27
# File 'lib/box_view/models/base.rb', line 24

def reload
  raise ResourceNotSaved.new if self.id.nil?
  api.find(self.id)
end

#saveObject



29
30
31
32
33
34
35
36
37
38
# File 'lib/box_view/models/base.rb', line 29

def save
  if self.id.nil?
    created_item = api.create(self.to_params)
    self.id = created_item && created_item.id
    self
  else
    api.update(self.id, self.to_params)
    self
  end
end

#to_paramsObject

Raises:

  • (NotImplementedError)


49
50
51
# File 'lib/box_view/models/base.rb', line 49

def to_params
  raise NotImplementedError.new
end

#write_attribute(name, value) ⇒ Object



20
21
22
# File 'lib/box_view/models/base.rb', line 20

def write_attribute(name, value)
  instance_variable_set("@#{name}", value)
end