Module: RbsRails::ActiveRecord::Enum
- Defined in:
- lib/rbs_rails/active_record/enum.rb,
sig/rbs_rails/active_record/enum.rbs
Constant Summary collapse
- IGNORED_ENUM_KEYS =
%i[prefix suffix default scopes]
Instance Method Summary collapse
-
#enum(*args, **options) ⇒ Object
@rbs! type definitions = Hash[Symbol, Array[Symbol] | Hash[Symbol, untyped]] type options = Hash[Symbol, untyped] type enum_definitions = Array[[definitions, options]].
-
#enum_definitions ⇒ Array[[ Symbol, String ]]
: Array[[Symbol, String]].
Instance Method Details
#enum(*args, **options) ⇒ Object
@rbs! type definitions = Hash[Symbol, Array[Symbol] | Hash[Symbol, untyped]] type options = Hash[Symbol, untyped] type enum_definitions = Array[[definitions, options]]
@enum_definitions: enum_definitions
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/rbs_rails/active_record/enum.rb', line 15 def enum(*args, **) #: untyped result = super # steep:ignore name, values = args #: [Symbol, Array[Symbol]?] if values # Enum definitions are passed via array argument # ex. enum :status, [:temporary, :accepted] definitions = { name => values } else # Enum definitions are passed via keyword arguments # ex. enum :status, temporary: 1, accepted: 2 values = .slice!(*IGNORED_ENUM_KEYS) definitions = { name => values } end @enum_definitions ||= [] #: enum_definitions @enum_definitions&.append([definitions, ]) result end |
#enum_definitions ⇒ Array[[ Symbol, String ]]
: Array[[Symbol, String]]
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/rbs_rails/active_record/enum.rb', line 36 def enum_definitions #: Array[[Symbol, String]] @enum_definitions&.flat_map do |(definitions, )| definitions.flat_map do |name, values| labels = case values when Array values when Hash values.keys end labels.map do |label| [name, enum_method_name(name, label, )] #: [Symbol, String] end end end.to_a end |