Skip to content

Commit 973bd8e

Browse files
committed
Fix NoMethodError when Mongoid's raise_not_found_error is false
Fixes #2623
1 parent 7583369 commit 973bd8e

2 files changed

Lines changed: 11 additions & 1 deletion

File tree

lib/rails_admin/adapters/mongoid.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ def new(params = {})
1919
end
2020

2121
def get(id)
22-
AbstractObject.new(model.find(id))
22+
object = model.find(id)
23+
return nil unless object
24+
AbstractObject.new(object)
2325
rescue => e
2426
raise e if %w(
2527
Mongoid::Errors::DocumentNotFound

spec/rails_admin/adapters/mongoid_spec.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,14 @@
3939
expect(@abstract_model.get('4f4f0824dcf2315093000000')).to be_nil
4040
end
4141

42+
context 'when Mongoid.raise_not_found_error is false' do
43+
before { allow(Mongoid).to receive(:raise_not_found_error).and_return(false) }
44+
45+
it '#get returns nil when id does not exist' do
46+
expect(@abstract_model.get('4f4f0824dcf2315093000000')).to be_nil
47+
end
48+
end
49+
4250
it '#first returns a player' do
4351
expect(@players).to include @abstract_model.first
4452
end

0 commit comments

Comments
 (0)