Skip to content

Commit d5386cf

Browse files
authored
Merge pull request rails#41278 from fatkodima/enum-original-key
Deserialize enum value to original hash key
2 parents 65979c6 + c12df0d commit d5386cf

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

activerecord/lib/active_record/enum.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,8 +204,8 @@ def enum(definitions)
204204

205205
pairs = values.respond_to?(:each_pair) ? values.each_pair : values.each_with_index
206206
pairs.each do |label, value|
207-
label = label.to_s
208207
enum_values[label] = value
208+
label = label.to_s
209209

210210
value_method_name = "#{prefix}#{label}#{suffix}"
211211
value_method_names << value_method_name

activerecord/test/cases/enum_test.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -700,6 +700,18 @@ def self.name; "Book"; end
700700
assert_not_predicate computer, :"Etc/GMT-1?"
701701
end
702702

703+
test "deserialize enum value to original hash key" do
704+
proposed = Class.new
705+
written = Class.new
706+
klass = Class.new(ActiveRecord::Base) do
707+
self.table_name = "books"
708+
enum status: { proposed => 0, written => 1 }
709+
end
710+
711+
book = klass.create!(status: 0)
712+
assert_equal proposed, book.status
713+
end
714+
703715
test "enum logs a warning if auto-generated negative scopes would clash with other enum names" do
704716
old_logger = ActiveRecord::Base.logger
705717
logger = ActiveSupport::LogSubscriber::TestHelper::MockLogger.new

0 commit comments

Comments
 (0)