diff --git a/lib/mongoid/fields/localized.rb b/lib/mongoid/fields/localized.rb index d0a3d3d382..e0a0ac9f49 100644 --- a/lib/mongoid/fields/localized.rb +++ b/lib/mongoid/fields/localized.rb @@ -15,7 +15,10 @@ class Localized < Standard # @return [ Object ] The value for the current locale. def demongoize(object) return if object.nil? - type.demongoize(lookup(object)) + case object + when Hash + type.demongoize(lookup(object)) + end end # Is the field localized or not? diff --git a/spec/mongoid/fields/localized_spec.rb b/spec/mongoid/fields/localized_spec.rb index 52513ed2e0..b3009bfc4b 100644 --- a/spec/mongoid/fields/localized_spec.rb +++ b/spec/mongoid/fields/localized_spec.rb @@ -113,6 +113,18 @@ end end + + context "passing a bogus value" do + + let(:value) do + field.demongoize("bogus") + end + + it "returns nil" do + expect(value).to be_nil + end + end + context "when the value does not exist" do context "when not using fallbacks" do