Class: JIRA::HasManyProxy
- Inherits:
-
Object
- Object
- JIRA::HasManyProxy
- Defined in:
- lib/jira/has_many_proxy.rb
Overview
Whenever a collection from a has_many relationship is accessed, an instance of this class is returned. This instance wraps the Array of instances in the collection with an extra build method, which allows new instances to be built on the collection with the correct properties.
In practice, instances of this class behave exactly like an Array.
Instance Attribute Summary collapse
-
#collection ⇒ Object
Returns the value of attribute collection.
-
#parent ⇒ Object
readonly
Returns the value of attribute parent.
-
#target_class ⇒ Object
readonly
Returns the value of attribute target_class.
Instance Method Summary collapse
-
#all ⇒ Object
Forces an HTTP request to fetch all instances of the target class that are associated with the parent.
-
#build(attrs = {}) ⇒ Object
Builds an instance of this class with the correct parent.
-
#initialize(parent, target_class, collection = []) ⇒ HasManyProxy
constructor
A new instance of HasManyProxy.
-
#method_missing(method_name, *args, &block) ⇒ Object
Delegate any missing methods to the collection that this proxy wraps.
Constructor Details
#initialize(parent, target_class, collection = []) ⇒ HasManyProxy
Returns a new instance of HasManyProxy.
14 15 16 17 18 |
# File 'lib/jira/has_many_proxy.rb', line 14 def initialize(parent, target_class, collection = []) @parent = parent @target_class = target_class @collection = collection end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name, *args, &block) ⇒ Object
Delegate any missing methods to the collection that this proxy wraps
40 41 42 |
# File 'lib/jira/has_many_proxy.rb', line 40 def method_missing(method_name, *args, &block) collection.send(method_name, *args, &block) end |
Instance Attribute Details
#collection ⇒ Object
Returns the value of attribute collection.
12 13 14 |
# File 'lib/jira/has_many_proxy.rb', line 12 def collection @collection end |
#parent ⇒ Object (readonly)
Returns the value of attribute parent.
11 12 13 |
# File 'lib/jira/has_many_proxy.rb', line 11 def parent @parent end |
#target_class ⇒ Object (readonly)
Returns the value of attribute target_class.
11 12 13 |
# File 'lib/jira/has_many_proxy.rb', line 11 def target_class @target_class end |
Instance Method Details
#all ⇒ Object
Forces an HTTP request to fetch all instances of the target class that are associated with the parent
35 36 37 |
# File 'lib/jira/has_many_proxy.rb', line 35 def all target_class.all(parent.client, parent.to_sym => parent) end |
#build(attrs = {}) ⇒ Object
27 28 29 30 31 |
# File 'lib/jira/has_many_proxy.rb', line 27 def build(attrs = {}) resource = target_class.new(parent.client, :attrs => attrs, parent.to_sym => parent) collection << resource resource end |