Skip to content

Commit 1a7395b

Browse files
committed
Merge pull request #797 from afn/0-9-stable
Fix and test for #490
2 parents f71ac76 + 263b66e commit 1a7395b

File tree

3 files changed

+16
-2
lines changed

3 files changed

+16
-2
lines changed

lib/active_model/serializer/association/has_one.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ def initialize(name, *args)
1212
end
1313

1414
def serializer_class(object, options = {})
15-
serializer_from_options || serializer_from_object(object, options) || default_serializer
15+
(serializer_from_options unless object.nil?) || serializer_from_object(object, options) || default_serializer
1616
end
1717

1818
def build_serializer(object, options = {})

test/fixtures/poro.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ class UserSerializer < ActiveModel::Serializer
8888
end
8989

9090
class UserInfoSerializer < ActiveModel::Serializer
91-
has_one :user
91+
has_one :user, serializer: UserSerializer
9292
end
9393

9494
class ProfileSerializer < ActiveModel::Serializer

test/unit/active_model/serializer/has_one_test.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,20 @@ def name
176176
}, @user_serializer.as_json)
177177
end
178178

179+
def test_associations_embedding_objects_with_nil_values
180+
user_info = UserInfo.new
181+
user_info.instance_eval do
182+
def user
183+
nil
184+
end
185+
end
186+
user_info_serializer = UserInfoSerializer.new(user_info)
187+
188+
assert_equal({
189+
'user_info' => { user: nil }
190+
}, user_info_serializer.as_json)
191+
end
192+
179193
def test_associations_embedding_ids_using_embed_namespace
180194
@association.embed_namespace = :links
181195
@association.embed = :ids

0 commit comments

Comments
 (0)