Module: SorbetRails::ModelUtils
- Extended by:
- T::Helpers, T::Sig
- Included in:
- SorbetRails::ModelPlugins::Base, ModelRbiFormatter
- Defined in:
- lib/sorbet-rails/model_utils.rb
Overview
typed: strict
Instance Method Summary collapse
- #add_relation_query_method(root, method_name, parameters: nil) ⇒ Object
- #exists_class_method?(method_name) ⇒ Boolean
- #exists_instance_method?(method_name) ⇒ Boolean
- #model_assoc_proxy_class_name ⇒ Object
- #model_assoc_relation_class_name ⇒ Object
- #model_class ⇒ Object
- #model_class_name ⇒ Object
- #model_module_name(module_name) ⇒ Object
- #model_relation_class_name ⇒ Object
Instance Method Details
#add_relation_query_method(root, method_name, parameters: nil) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/sorbet-rails/model_utils.rb', line 53 def add_relation_query_method(root, method_name, parameters: nil) # a relation querying method will be available on # - model (as a class method) # - activerecord relation # - asocciation collection proxy # - association relation # in case (1) and (2), it returns a Model::ActiveRecord_Relation # in case (3) and (4), it returns a Model::ActiveRecord_AssociationRelation # force generating these methods because sorbet's hidden-definitions generate & override them model_class_rbi = root.create_class(self.model_class_name) model_class_rbi.create_method( method_name, parameters: parameters, return_type: self.model_relation_class_name, class_method: true, ) model_relation_rbi = root.create_class(self.model_relation_class_name) model_relation_rbi.create_method( method_name, parameters: parameters, return_type: self.model_relation_class_name, ) model_assoc_relation_rbi = root.create_class(self.model_assoc_relation_class_name) model_assoc_relation_rbi.create_method( method_name, parameters: parameters, return_type: self.model_assoc_relation_class_name, ) collection_proxy_rbi = root.create_class(self.model_assoc_proxy_class_name) collection_proxy_rbi.create_method( method_name, parameters: parameters, return_type: self.model_assoc_relation_class_name, ) end |
#exists_class_method?(method_name) ⇒ Boolean
42 43 44 |
# File 'lib/sorbet-rails/model_utils.rb', line 42 def exists_class_method?(method_name) model_class.respond_to?(method_name) end |
#exists_instance_method?(method_name) ⇒ Boolean
37 38 39 |
# File 'lib/sorbet-rails/model_utils.rb', line 37 def exists_instance_method?(method_name) model_class.method_defined?(method_name) end |
#model_assoc_proxy_class_name ⇒ Object
22 23 24 |
# File 'lib/sorbet-rails/model_utils.rb', line 22 def model_assoc_proxy_class_name "#{model_class.name}::ActiveRecord_Associations_CollectionProxy" end |
#model_assoc_relation_class_name ⇒ Object
27 28 29 |
# File 'lib/sorbet-rails/model_utils.rb', line 27 def model_assoc_relation_class_name "#{model_class.name}::ActiveRecord_AssociationRelation" end |
#model_class ⇒ Object
9 |
# File 'lib/sorbet-rails/model_utils.rb', line 9 def model_class; end |
#model_class_name ⇒ Object
12 13 14 |
# File 'lib/sorbet-rails/model_utils.rb', line 12 def model_class_name "#{model_class.name}" end |
#model_module_name(module_name) ⇒ Object
32 33 34 |
# File 'lib/sorbet-rails/model_utils.rb', line 32 def model_module_name(module_name) "#{model_class.name}::#{module_name}" end |
#model_relation_class_name ⇒ Object
17 18 19 |
# File 'lib/sorbet-rails/model_utils.rb', line 17 def model_relation_class_name "#{model_class.name}::ActiveRecord_Relation" end |