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.
15
16
17
18
19
20
|
# File 'lib/box_view/models/base.rb', line 15
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.
13
14
15
|
# File 'lib/box_view/models/base.rb', line 13
def session
@session
end
|
Class Method Details
.convert_attribute(value, type) ⇒ Object
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
# File 'lib/box_view/models/base.rb', line 68
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
56
57
58
59
60
61
62
63
64
65
66
|
# File 'lib/box_view/models/base.rb', line 56
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
47
48
49
|
# File 'lib/box_view/models/base.rb', line 47
def api
raise NotImplementedError.new
end
|
#destroy ⇒ Object
42
43
44
45
|
# File 'lib/box_view/models/base.rb', line 42
def destroy
raise ResourceNotSaved.new if self.id.nil?
api.destroy(self.id)
end
|
#reload ⇒ Object
26
27
28
29
|
# File 'lib/box_view/models/base.rb', line 26
def reload
raise ResourceNotSaved.new if self.id.nil?
api.find(self.id)
end
|
#save ⇒ Object
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/box_view/models/base.rb', line 31
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
51
52
53
|
# File 'lib/box_view/models/base.rb', line 51
def to_params
raise NotImplementedError.new
end
|
#write_attribute(name, value) ⇒ Object
22
23
24
|
# File 'lib/box_view/models/base.rb', line 22
def write_attribute(name, value)
instance_variable_set("@#{name}", value)
end
|