Class: Zoop::NestedModel

Inherits:
Model show all
Defined in:
lib/zoop/nested_model.rb

Direct Known Subclasses

SplitRule

Constant Summary

Constants inherited from ZoopObject

ZoopObject::RESOURCES

Instance Attribute Summary

Attributes inherited from ZoopObject

#attributes

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Model

class_name, create, #destroy, #save, underscored_class_name, #update

Methods inherited from ZoopObject

#==, #[]=, convert, #empty?, #initialize, #respond_to?, #to_hash, #to_s, #unsaved_attributes

Constructor Details

This class inherits a constructor from Zoop::ZoopObject

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Zoop::ZoopObject

Class Method Details

.find_by_id(parent_id:, id:) ⇒ Object Also known as: find

Raises:



20
21
22
23
24
25
# File 'lib/zoop/nested_model.rb', line 20

def find_by_id(parent_id:, id:)
  raise RequestError.new('Invalid ID')        unless        id.present?
  raise RequestError.new('Invalid parent ID') unless parent_id.present?

  Zoop::Request.get(url parent_id, id).call
end

.parent_resource_nameObject

Raises:

  • (NotImplementedError)


16
17
18
# File 'lib/zoop/nested_model.rb', line 16

def parent_resource_name
  raise NotImplementedError
end

.url(parent_id, *params) ⇒ Object

Raises:



28
29
30
31
# File 'lib/zoop/nested_model.rb', line 28

def url(parent_id, *params)
  raise RequestError.new('Invalid parent ID') unless parent_id.present?
  ["/#{parent_resource_name}", parent_id, "#{ CGI.escape underscored_class_name }s", *params].join '/'
end

Instance Method Details

#createObject



4
5
6
7
# File 'lib/zoop/nested_model.rb', line 4

def create
  @custom_url = self.class.url(parent_id)
  super
end

#url(*params) ⇒ Object

Raises:



9
10
11
12
# File 'lib/zoop/nested_model.rb', line 9

def url(*params)
  raise RequestError.new('Invalid ID') unless id.present?
  self.class.url parent_id, CGI.escape(id.to_s), *params
end