Skip to content

Commit 098fd7f

Browse files
authored
Merge pull request rails#41164 from alpaca-tc/fixed_enum
Fixed multiple enums declaration with _prefix/_suffix
2 parents 60e979d + f96de8b commit 098fd7f

File tree

2 files changed

+42
-4
lines changed

2 files changed

+42
-4
lines changed

activerecord/lib/active_record/enum.rb

+10-4
Original file line numberDiff line numberDiff line change
@@ -190,11 +190,17 @@ def enum(definitions)
190190

191191
value_method_names = []
192192
_enum_methods_module.module_eval do
193-
enum_prefix = name if enum_prefix == true
194-
prefix = "#{enum_prefix}_" if enum_prefix
193+
prefix = if enum_prefix == true
194+
"#{name}_"
195+
elsif enum_prefix
196+
"#{enum_prefix}_"
197+
end
195198

196-
enum_suffix = name if enum_suffix == true
197-
suffix = "_#{enum_suffix}" if enum_suffix
199+
suffix = if enum_suffix == true
200+
"_#{name}"
201+
elsif enum_suffix
202+
"_#{enum_suffix}"
203+
end
198204

199205
pairs = values.respond_to?(:each_pair) ? values.each_pair : values.each_with_index
200206
pairs.each do |label, value|

activerecord/test/cases/enum_test.rb

+32
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,38 @@ def self.name; "Book"; end
511511
assert_predicate book2, :single?
512512
end
513513

514+
test "declare multiple enums with { _prefix: true }" do
515+
klass = Class.new(ActiveRecord::Base) do
516+
self.table_name = "books"
517+
518+
enum(
519+
status: [:value_1],
520+
last_read: [:value_1],
521+
_prefix: true
522+
)
523+
end
524+
525+
instance = klass.new
526+
assert_respond_to instance, :status_value_1?
527+
assert_respond_to instance, :last_read_value_1?
528+
end
529+
530+
test "declare multiple enums with { _suffix: true }" do
531+
klass = Class.new(ActiveRecord::Base) do
532+
self.table_name = "books"
533+
534+
enum(
535+
status: [:value_1],
536+
last_read: [:value_1],
537+
_suffix: true
538+
)
539+
end
540+
541+
instance = klass.new
542+
assert_respond_to instance, :value_1_status?
543+
assert_respond_to instance, :value_1_last_read?
544+
end
545+
514546
test "enum with alias_attribute" do
515547
klass = Class.new(ActiveRecord::Base) do
516548
self.table_name = "books"

0 commit comments

Comments
 (0)