Class: Tapioca::Dsl::Helpers::ActiveRecordColumnTypeHelper
- Inherits:
-
Object
- Object
- Tapioca::Dsl::Helpers::ActiveRecordColumnTypeHelper
- Extended by:
- T::Sig
- Includes:
- RBIHelper
- Defined in:
- lib/tapioca/dsl/helpers/active_record_column_type_helper.rb
Constant Summary
Constants included from SorbetHelper
SorbetHelper::FEATURE_REQUIREMENTS, SorbetHelper::SORBET_BIN, SorbetHelper::SORBET_EXE_PATH_ENV_VAR, SorbetHelper::SORBET_GEM_SPEC, SorbetHelper::SORBET_PAYLOAD_URL, SorbetHelper::SPOOM_CONTEXT
Instance Method Summary collapse
-
#initialize(constant) ⇒ ActiveRecordColumnTypeHelper
constructor
A new instance of ActiveRecordColumnTypeHelper.
- #type_for(column_name) ⇒ Object
Methods included from RBIHelper
#as_nilable_type, #create_block_param, #create_kw_opt_param, #create_kw_param, #create_kw_rest_param, #create_opt_param, #create_param, #create_rest_param, #create_typed_param, #sanitize_signature_types, serialize_type_variable, #valid_method_name?, #valid_parameter_name?
Methods included from SorbetHelper
#sorbet, #sorbet_path, #sorbet_supports?
Constructor Details
#initialize(constant) ⇒ ActiveRecordColumnTypeHelper
Returns a new instance of ActiveRecordColumnTypeHelper.
12 13 14 |
# File 'lib/tapioca/dsl/helpers/active_record_column_type_helper.rb', line 12 def initialize(constant) @constant = constant end |
Instance Method Details
#type_for(column_name) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/tapioca/dsl/helpers/active_record_column_type_helper.rb', line 17 def type_for(column_name) return ["T.untyped", "T.untyped"] if do_not_generate_strong_types?(@constant) column = @constant.columns_hash[column_name] column_type = @constant.attribute_types[column_name] getter_type = type_for_activerecord_value(column_type) setter_type = case column_type when ActiveRecord::Enum::EnumType enum_setter_type(column_type) else getter_type end if column&.null getter_type = as_nilable_type(getter_type) unless not_nilable_serialized_column?(column_type) return [getter_type, as_nilable_type(setter_type)] end if column_name == @constant.primary_key || column_name == "created_at" || column_name == "updated_at" getter_type = as_nilable_type(getter_type) end [getter_type, setter_type] end |