Class: TicketEvolution::Model
- Inherits:
-
Builder
- Object
- OpenStruct
- Builder
- TicketEvolution::Model
show all
- Defined in:
- lib/ticket_evolution/core/model.rb,
lib/ticket_evolution/core/model/parental_behavior.rb
Direct Known Subclasses
Account, Address, Affiliate, ApiError, Brokerage, Category, City, Client, Commission, CommissionPayment, Company, Configuration, Credential, CreditCard, CreditMemo, CreditMemoPayment, CustomPage, EmailAddress, Event, FilteredTicket, Item, Office, Order, Payment, Performer, PhoneNumber, PromotionCode, QueuedOrder, Quote, RateOption, ServiceFee, Shipment, ShippingSetting, TicketGroup, TicketHold, TrackDetail, Transaction, User, Venue
Defined Under Namespace
Modules: ParentalBehavior
Instance Method Summary
collapse
Methods inherited from Builder
#id, #id=, #to_hash
#singular_class
Constructor Details
#initialize(params = {}) ⇒ Model
Returns a new instance of Model.
3
4
5
6
7
8
9
10
|
# File 'lib/ticket_evolution/core/model.rb', line 3
def initialize(params = {})
@connection = params.delete(:connection)
raise TicketEvolution::ConnectionNotFound.new \
"#{self.class.name} must receive a TicketEvolution::Connection object on initialize" \
unless @connection.is_a? TicketEvolution::Connection
@scope = params['url'].split('/')[0..2].join('/') if params['url'] =~ /^(\/[a-z_]+s\/\d+){2}$/
super(params)
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args) ⇒ Object
64
65
66
67
68
69
70
71
|
# File 'lib/ticket_evolution/core/model.rb', line 64
def method_missing(method, *args)
begin
method = method.to_s.gsub("_endpoint", "") if method.to_s.end_with? "_endpoint"
"#{plural_class_name}::#{method.to_s.camelize}".constantize.new(:parent => plural_class.new(:parent => @connection, :id => self.id))
rescue
super
end
end
|
Instance Method Details
#attributes ⇒ Object
22
23
24
|
# File 'lib/ticket_evolution/core/model.rb', line 22
def attributes
HashWithIndifferentAccess.new(to_hash)
end
|
#attributes=(params) ⇒ Object
26
27
28
29
30
|
# File 'lib/ticket_evolution/core/model.rb', line 26
def attributes=(params)
params.each do |k, v|
send("#{k}=", v)
end
end
|
#endpoint ⇒ Object
44
45
46
47
48
49
50
51
|
# File 'lib/ticket_evolution/core/model.rb', line 44
def endpoint
parent = if scope.present?
scope[:class].constantize.new(:parent => @connection, :id => scope[:id])
else
@connection
end
plural_class.new({:id => id, :parent => parent})
end
|
#plural_class ⇒ Object
18
19
20
|
# File 'lib/ticket_evolution/core/model.rb', line 18
def plural_class
self.plural_class_name.constantize rescue nil
end
|
#plural_class_name ⇒ Object
12
13
14
15
16
|
# File 'lib/ticket_evolution/core/model.rb', line 12
def plural_class_name
parts = ["TicketEvolution", self.class.name.demodulize.pluralize.camelize]
parts[0] = self.scope[:class] if @scope.present?
parts.join('::')
end
|
#scope ⇒ Object
32
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/ticket_evolution/core/model.rb', line 32
def scope
if @scope.present?
{}.tap do |scope|
parts = @scope.split('/')
scope[:class] = "TicketEvolution::#{parts[1].camelize}"
scope[:id] = parts[2].to_i
end
else
nil
end
end
|