Class: ChargeBee::Model
- Inherits:
-
Object
show all
- Defined in:
- lib/chargebee/models/model.rb
Direct Known Subclasses
Addon, Address, Card, Comment, Coupon, CouponCode, Customer, Customer::BillingAddress, Customer::PaymentMethod, Download, Estimate, Estimate::Discount, Estimate::LineItem, Estimate::Tax, Event, Event::Webhook, HostedPage, Invoice, Invoice::BillingAddress, Invoice::Discount, Invoice::LineItem, Invoice::LinkedOrder, Invoice::LinkedTransaction, Invoice::Note, Invoice::ShippingAddress, Invoice::Tax, Order, Plan, PortalSession, PortalSession::LinkedCustomer, Subscription, Subscription::Addon, Subscription::Coupon, Subscription::ShippingAddress, Transaction, Transaction::LinkedInvoice, Transaction::LinkedRefund
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(values, sub_types = {}) ⇒ Model
Returns a new instance of Model.
6
7
8
9
|
# File 'lib/chargebee/models/model.rb', line 6
def initialize(values, sub_types={})
@values = values
@sub_types = sub_types
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(m, *args, &block) ⇒ Object
40
41
42
43
44
45
46
47
48
|
# File 'lib/chargebee/models/model.rb', line 40
def method_missing(m, *args, &block)
if(@values.has_key?(m))
return @values[m]
elsif(m[0,3] == "cf_") return nil
end
puts "There's no method called #{m} #{args} here -- please try again."
puts @values
end
|
Class Method Details
.construct(values, sub_types = {}) ⇒ Object
61
62
63
64
65
66
67
|
# File 'lib/chargebee/models/model.rb', line 61
def self.construct(values, sub_types = {})
if(values != nil)
obj = self.new(values, sub_types)
obj.load(values)
obj
end
end
|
.uri_path(*paths) ⇒ Object
50
51
52
53
54
55
56
57
58
59
|
# File 'lib/chargebee/models/model.rb', line 50
def self.uri_path(*paths)
url = ""
for path in paths
if(path.nil? || path.strip.length < 1)
raise "Id is empty or nil"
end
url = "#{url}/#{URI.encode(path.strip)}"
end
return url
end
|
Instance Method Details
#inspect ⇒ Object
15
16
17
|
# File 'lib/chargebee/models/model.rb', line 15
def inspect()
"#<#{self.class}:0x#{self.object_id.to_s(16)} > JSON: " + JSON.pretty_generate(@values)
end
|
#load(values) ⇒ Object
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# File 'lib/chargebee/models/model.rb', line 19
def load(values)
instance_eval do
values.each do |k, v|
set_val = nil
case v
when Hash
set_val = (@sub_types[k] != nil) ? @sub_types[k].construct(v) : v
when Array
if(@sub_types[k] != nil)
set_val = v.map { |item| @sub_types[k].construct(item)}
else
set_val = v
end
else
set_val = v
end
instance_variable_set("@#{k}", set_val)
end
end
end
|
#to_s(*args) ⇒ Object
11
12
13
|
# File 'lib/chargebee/models/model.rb', line 11
def to_s(*args)
JSON.pretty_generate(@values)
end
|