Skip to content

Commit

Permalink
Merge pull request mongodb#4035 from sivagollapalli/issue_3966
Browse files Browse the repository at this point in the history
Added spec for issue #3966
  • Loading branch information
durran committed Apr 27, 2015
2 parents ab2434c + 89da6a8 commit 931b6cc
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 1 deletion.
3 changes: 2 additions & 1 deletion lib/mongoid/relations/embedded/many.rb
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,8 @@ def delete_all(conditions = {})
# @since 3.1.0
def delete_if
if block_given?
target.each do |doc|
dup_target = target.dup
dup_target.each do |doc|
delete(doc) if yield(doc)
end
self
Expand Down
5 changes: 5 additions & 0 deletions spec/app/models/company.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class Company
include Mongoid::Document

embeds_many :staffs
end
7 changes: 7 additions & 0 deletions spec/app/models/staff.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
class Staff
include Mongoid::Document

embedded_in :company

field :age, type: Integer
end
11 changes: 11 additions & 0 deletions spec/mongoid/relations/embedded/many_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3933,4 +3933,15 @@ class TrackingIdValidationHistory
expect(loaded.extension).to eq("Testing")
end
end

context "deleting embedded documents" do
it "able to delete embedded documents upon condition" do
company = Company.new
4.times { |i| company.staffs << Staff.new(age: 50 + i)}
2.times { |i| company.staffs << Staff.new(age: 40)}
company.save
company.staffs.delete_if {|x| x.age >= 50}
expect(company.staffs.count).to eq(2)
end
end
end

0 comments on commit 931b6cc

Please sign in to comment.