Class: DataMapper::Associations::OneToMany::Proxy
- Object
- DataMapper::Associations::OneToMany::Proxy
Constructor Summary
private
initialize(relationship, parent_resource)
[View source]
142 143 144 145 146 147 148 149
# File 'dm-core/lib/dm-core/associations/one_to_many.rb', line 142 def initialize(relationship, parent_resource) # raise ArgumentError, "+relationship+ should be a DataMapper::Association::Relationship, but was #{relationship.class}", caller unless Relationship === relationship # raise ArgumentError, "+parent_resource+ should be a DataMapper::Resource, but was #{parent_resource.class}", caller unless Resource === parent_resource @relationship = relationship @parent_resource = parent_resource @dirty_children = [] end
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
private
method_missing(method, *args, &block)
[View source]
203 204 205
# File 'dm-core/lib/dm-core/associations/one_to_many.rb', line 203 def method_missing(method, *args, &block) children.__send__(method, *args, &block) end
Public Visibility
Public Instance Method Summary
| #<<(resource) | |
|---|---|
| #all(options={}) | |
| #clear | |
| #delete(resource, &block) | |
| #delete_at(index) | |
| #first(options={}) | |
| #pop | |
| #push(*resources) | |
| #reload! | |
| #replace(resources) | |
| #save | |
| #shift | |
| #unshift(*resources) |
Public Instance Methods Inherited from Object
Public Instance Method Details
<<
public
<<(resource)
[View source]
84 85 86 87 88 89 90 91 92 93 94 95 96
# File 'dm-core/lib/dm-core/associations/one_to_many.rb', line 84 def <<(resource) # # The order here is of the essence. # # self.append_resource used to be called before children.<<, which created weird errors # where the resource was appended in the db before it was appended onto the @children # structure, that was just read from the database, and therefore suddenly had two # elements instead of one after the first addition. # children << resource append_resource([ resource ]) self end
all
public
all(options={})
[View source]
126 127 128
# File 'dm-core/lib/dm-core/associations/one_to_many.rb', line 126 def all(options={}) options.empty? ? children : @relationship.get_children(@parent_resource,options,:all) end
clear
public
clear
[View source]
114 115 116 117 118 119 120 121 122
# File 'dm-core/lib/dm-core/associations/one_to_many.rb', line 114 def clear each { |resource| remove_resource(resource) } children.clear self end
delete
public
delete(resource, &block)
[View source]
106 107 108
# File 'dm-core/lib/dm-core/associations/one_to_many.rb', line 106 def delete(resource, &block) remove_resource(children.delete(resource, &block)) end
delete_at
public
delete_at(index)
[View source]
110 111 112
# File 'dm-core/lib/dm-core/associations/one_to_many.rb', line 110 def delete_at(index) remove_resource(children.delete_at(index)) end
first
public
first(options={})
[View source]
130 131 132
# File 'dm-core/lib/dm-core/associations/one_to_many.rb', line 130 def first(options={}) options.empty? ? children.first : @relationship.get_children(@parent_resource,options,:first) end
pop
public
pop
[View source]
98 99 100 101 102 103 104
# File 'dm-core/lib/dm-core/associations/one_to_many.rb', line 98 def pop remove_resource(children.pop) end
push
public
push(*resources)
[View source]
72 73 74 75 76
# File 'dm-core/lib/dm-core/associations/one_to_many.rb', line 72 def push(*resources) append_resource(resources) children.push(*resources) self end
reload!
public
reload!
[View source]
134 135 136 137 138 139 140 141 142
# File 'dm-core/lib/dm-core/associations/one_to_many.rb', line 134 def reload! @dirty_children = [] @children = nil self end
replace
public
replace(resources)
[View source]
65 66 67 68 69 70
# File 'dm-core/lib/dm-core/associations/one_to_many.rb', line 65 def replace(resources) each { |resource| remove_resource(resource) } append_resource(resources) children.replace(resources) self end
save
public
save
[View source]
120 121 122 123 124 125 126 127 128
# File 'dm-core/lib/dm-core/associations/one_to_many.rb', line 120 def save save_resources(@dirty_children) @dirty_children = [] self end
shift
public
shift
[View source]
102 103 104 105 106 107 108
# File 'dm-core/lib/dm-core/associations/one_to_many.rb', line 102 def shift remove_resource(children.shift) end
unshift
public
unshift(*resources)
[View source]
78 79 80 81 82
# File 'dm-core/lib/dm-core/associations/one_to_many.rb', line 78 def unshift(*resources) append_resource(resources) children.unshift(*resources) self end