Module: FlexibleApi::ClassMethods
- Defined in:
- lib/flexible_api.rb
Instance Method Summary collapse
- #default_request_level(level_name) ⇒ Object
-
#define_request_level(name, &block) ⇒ Object
Define a request level for this class Takes a name, and a block which defined the request level.
-
#find_all_hash(options = {}) ⇒ Object
Find all of an element (or association) and load it at the given request level.
-
#find_hash(id, options = {}) ⇒ Object
Find a single element and load it at the given request level.
-
#find_level(name = nil) ⇒ Object
Find a given level by name and return the request level.
- #request_levels ⇒ Object
Instance Method Details
#default_request_level(level_name) ⇒ Object
49 50 51 |
# File 'lib/flexible_api.rb', line 49 def default_request_level(level_name) @default_request_level_name = level_name end |
#define_request_level(name, &block) ⇒ Object
Define a request level for this class Takes a name, and a block which defined the request level
26 27 28 29 30 31 |
# File 'lib/flexible_api.rb', line 26 def define_request_level(name, &block) level = RequestLevel.new(name, self) level.instance_eval &block @levels ||= {} @levels[name] = level end |
#find_all_hash(options = {}) ⇒ Object
Find all of an element (or association) and load it at the given request level
42 43 44 45 46 47 |
# File 'lib/flexible_api.rb', line 42 def find_all_hash( = {}) .assert_valid_keys(:request_level) level = find_level([:request_level]) records = self.all(:select => level.select_field.join(', '), :include => level.include_field) records.map { |r| level.receive(r) } end |
#find_hash(id, options = {}) ⇒ Object
Find a single element and load it at the given request level
34 35 36 37 38 39 |
# File 'lib/flexible_api.rb', line 34 def find_hash(id, = {}) .assert_valid_keys(:request_level) level = find_level([:request_level]) record = self.find(id, :select => level.select_field.join(', '), :include => level.include_field) level.receive record end |
#find_level(name = nil) ⇒ Object
Find a given level by name and return the request level
54 55 56 57 58 59 |
# File 'lib/flexible_api.rb', line 54 def find_level(name = nil) @levels ||= {} level = name.nil? ? load_default_request_level : @levels[name.to_sym] raise NoSuchRequestLevelError.new(name, self.name) if level.nil? level end |
#request_levels ⇒ Object
20 21 22 |
# File 'lib/flexible_api.rb', line 20 def request_levels @levels.nil? ? [] : @levels.keys end |