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

validatable?

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