class JIRA::HasManyProxy

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.

Attributes

collection[RW]
parent[R]
target_class[R]

Public Class Methods

new(parent, target_class, collection = []) click to toggle source
# File lib/jira/has_many_proxy.rb, line 13
def initialize(parent, target_class, collection = [])
  @parent       = parent
  @target_class = target_class
  @collection   = collection
end

Public Instance Methods

all() click to toggle source

Forces an HTTP request to fetch all instances of the target class that are associated with the parent

# File lib/jira/has_many_proxy.rb, line 34
def all
  target_class.all(parent.client, parent.to_sym => parent)
end
build(attrs = {}) click to toggle source

Builds an instance of this class with the correct parent. For example, issue.comments.build(attrs) will initialize a comment as follows:

JIRA::Resource::Comment.new(issue.client,
                            :attrs => attrs,
                            :issue => issue)
# File lib/jira/has_many_proxy.rb, line 26
def build(attrs = {})
  resource = target_class.new(parent.client, :attrs => attrs, parent.to_sym => parent)
  collection << resource
  resource
end
method_missing(method_name, *args, &block) click to toggle source

Delegate any missing methods to the collection that this proxy wraps

# File lib/jira/has_many_proxy.rb, line 39
def method_missing(method_name, *args, &block)
  collection.send(method_name, *args, &block)
end