Class: MongoModel::Associations::HasManyByForeignKey::Association
Instance Attribute Summary
#definition, #instance
Instance Method Summary
collapse
#initialize, #proxy
Instance Method Details
#assign(doc) ⇒ Object
75
76
77
78
|
# File 'lib/mongomodel/concerns/associations/has_many_by_foreign_key.rb', line 75
def assign(doc)
set_inverse_association(doc)
doc.save(false) unless doc.new_record?
end
|
#build(*args, &block) ⇒ Object
49
50
51
52
53
|
# File 'lib/mongomodel/concerns/associations/has_many_by_foreign_key.rb', line 49
def build(*args, &block)
doc = scoped.new(*args, &block)
new_documents << doc
doc
end
|
#create(*args) ⇒ Object
55
56
57
58
59
60
|
# File 'lib/mongomodel/concerns/associations/has_many_by_foreign_key.rb', line 55
def create(*args)
scoped.create(*args) do |doc|
set_inverse_association(doc)
yield doc if block_given?
end
end
|
#create!(*args) ⇒ Object
62
63
64
65
66
67
|
# File 'lib/mongomodel/concerns/associations/has_many_by_foreign_key.rb', line 62
def create!(*args)
scoped.create!(*args) do |doc|
set_inverse_association(doc)
yield doc if block_given?
end
end
|
#ensure_class(array) ⇒ Object
94
95
96
|
# File 'lib/mongomodel/concerns/associations/has_many_by_foreign_key.rb', line 94
def ensure_class(array)
array.is_a?(Array) ? array.each { |i| super(i) } : super
end
|
#find_target ⇒ Object
43
44
45
46
47
|
# File 'lib/mongomodel/concerns/associations/has_many_by_foreign_key.rb', line 43
def find_target
scoped.each { |doc|
doc.send("#{inverse_of}=", instance) if doc.respond_to?("#{inverse_of}=")
} + new_documents
end
|
#replace(array) ⇒ Object
69
70
71
72
73
|
# File 'lib/mongomodel/concerns/associations/has_many_by_foreign_key.rb', line 69
def replace(array)
ensure_class(array)
array.each { |doc| assign(doc) }
super
end
|
#scoped ⇒ Object
90
91
92
|
# File 'lib/mongomodel/concerns/associations/has_many_by_foreign_key.rb', line 90
def scoped
definition.scope.where(foreign_key => instance.id).on_load { |doc| set_inverse_association(doc) }
end
|
#unset(doc) ⇒ Object
80
81
82
83
84
85
86
87
88
|
# File 'lib/mongomodel/concerns/associations/has_many_by_foreign_key.rb', line 80
def unset(doc)
if doc.respond_to?("#{inverse_of}=")
doc.send("#{inverse_of}=", nil) if doc.send(inverse_of) == instance
else
doc[foreign_key] = nil if doc[foreign_key] == instance.id
end
doc.save(false) unless doc.new_record?
end
|