Class: BoxView::Models::Base
- Inherits:
-
Object
- Object
- BoxView::Models::Base
show all
- Defined in:
- lib/box_view/models/base.rb
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
#session ⇒ Object
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
#api ⇒ Object
45
46
47
|
# File 'lib/box_view/models/base.rb', line 45
def api
raise NotImplementedError.new
end
|
#destroy ⇒ Object
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
|
#reload ⇒ Object
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
|
#save ⇒ Object
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_params ⇒ Object
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
|