Sha256: a3d82dd0a37e6d14d79552e54f2959364894ce75b4543309c7f6b3a2a8c75b88

Contents?: true

Size: 1.2 KB

Versions: 12

Compression:

Stored size: 1.2 KB

Contents

# typed: strict
require ('sorbet-rails/model_plugins/base')
require("sorbet-rails/utils")
class SorbetRails::ModelPlugins::ActiveRecordNamedScope < SorbetRails::ModelPlugins::Base

  sig { override.params(root: Parlour::RbiGenerator::Namespace).void }
  def generate(root)
    model_class_rbi = root.create_class(self.model_class_name)

    @model_class.methods.sort.each do |method_name|
      next unless SorbetRails::Utils.valid_method_name?(method_name.to_s)
      method_obj = @model_class.method(method_name)
      next unless method_obj.present? && method_obj.source_location.present?
      # we detect sscopes defined in a model by 2 criteria:
      # - they don't have an owner name
      # - they are defined in 'activerecord/lib/active_record/scoping/named.rb'
      # https://github.com/rails/rails/blob/master/activerecord/lib/active_record/scoping/named.rb
      next unless method_obj.owner.name == nil
      source_file = method_obj.source_location[0]
      next unless source_file.include?("lib/active_record/scoping/named.rb")

      add_relation_query_method(
        root,
        method_name.to_s,
        parameters: [
          Parameter.new("*args", type: "T.untyped"),
        ],
      )
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
sorbet-rails-0.6.3 lib/sorbet-rails/model_plugins/active_record_named_scope.rb
sorbet-rails-0.6.2 lib/sorbet-rails/model_plugins/active_record_named_scope.rb
sorbet-rails-0.6.1 lib/sorbet-rails/model_plugins/active_record_named_scope.rb
sorbet-rails-0.6.0 lib/sorbet-rails/model_plugins/active_record_named_scope.rb
sorbet-rails-0.5.9.1 lib/sorbet-rails/model_plugins/active_record_named_scope.rb
sorbet-rails-0.5.9 lib/sorbet-rails/model_plugins/active_record_named_scope.rb
sorbet-rails-0.5.8.1 lib/sorbet-rails/model_plugins/active_record_named_scope.rb
sorbet-rails-0.5.8 lib/sorbet-rails/model_plugins/active_record_named_scope.rb
sorbet-rails-0.5.7 lib/sorbet-rails/model_plugins/active_record_named_scope.rb
sorbet-rails-0.5.6 lib/sorbet-rails/model_plugins/active_record_named_scope.rb
sorbet-rails-0.5.5.1 lib/sorbet-rails/model_plugins/active_record_named_scope.rb
sorbet-rails-0.5.5 lib/sorbet-rails/model_plugins/active_record_named_scope.rb