From abc1ac92b0c5417e6dab748f7c709da151a1a43c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Su=C4=8Di=C4=87?= Date: Mon, 29 Jun 2026 10:45:39 +0200 Subject: [PATCH] Return stored enumeration instances as-is from attribute getters --- lib/enumerations/value.rb | 1 + test/value_test.rb | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/lib/enumerations/value.rb b/lib/enumerations/value.rb index 4366880..b99a13f 100644 --- a/lib/enumerations/value.rb +++ b/lib/enumerations/value.rb @@ -58,6 +58,7 @@ def define_attributes_getters self.class.send :define_method, key do |locale: I18n.locale| case @attributes[key] + when Enumerations::Base then @attributes[key] when String, Symbol then translate_attribute(key, locale) else @attributes[key] end diff --git a/test/value_test.rb b/test/value_test.rb index 7b02a55..d526bd1 100644 --- a/test/value_test.rb +++ b/test/value_test.rb @@ -108,4 +108,13 @@ def test_string_methods_on_value assert_equal enum.foobar.upcase, 'FOOBAR' end + + def test_enumeration_attribute_storing_another_enumeration_is_returned_as_is + enum = Class.new(Enumerations::Base) do + value :foobar, related: Role.admin + end + + assert_instance_of Role, enum.foobar.related + assert_equal true, enum.foobar.related.admin? + end end