Sha256: 21b7b11de7127078f6b80297ed2969c85cfadd16dadf0e21b68ad8224f9deca8

Contents?: true

Size: 1.26 KB

Versions: 14

Compression:

Stored size: 1.26 KB

Contents

# typed: strict
require('parlour')
require('sorbet-rails/model_utils')
module SorbetRails::ModelPlugins
  class Base < ::Parlour::Plugin
    extend T::Sig
    extend T::Helpers
    include SorbetRails::ModelUtils

    abstract!

    # convenient rename
    Parameter = ::Parlour::RbiGenerator::Parameter

    sig { override.returns(T.class_of(ActiveRecord::Base)) }
    attr_reader :model_class

    sig { returns(T::Set[String]) }
    attr_reader :available_classes

    sig {
      params(
        model_class: T.class_of(ActiveRecord::Base),
        available_classes: T::Set[String],
      ).
      void
    }
    def initialize(model_class, available_classes)
      @model_class = T.let(model_class, T.class_of(ActiveRecord::Base))
      @available_classes = T.let(available_classes, T::Set[String])
    end

    sig { params(column_name: String).returns(T.nilable(Class)) }
    def serialization_coder_for_column(column_name)
      column_type = @model_class.type_for_attribute(column_name)
      return unless column_type.is_a?(ActiveRecord::Type::Serialized)

      object_class = column_type.coder.try(:object_class)
      if object_class
        object_class
      elsif column_type.coder.is_a? Class
        column_type.coder
      else
        Object
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
sorbet-rails-0.7.34 lib/sorbet-rails/model_plugins/base.rb
sorbet-rails-0.7.33 lib/sorbet-rails/model_plugins/base.rb
sorbet-rails-0.7.32 lib/sorbet-rails/model_plugins/base.rb
sorbet-rails-0.7.31 lib/sorbet-rails/model_plugins/base.rb
sorbet-rails-0.7.27 lib/sorbet-rails/model_plugins/base.rb
sorbet-rails-0.7.26 lib/sorbet-rails/model_plugins/base.rb
sorbet-rails-0.7.25 lib/sorbet-rails/model_plugins/base.rb
sorbet-rails-0.7.24 lib/sorbet-rails/model_plugins/base.rb
sorbet-rails-0.7.23 lib/sorbet-rails/model_plugins/base.rb
sorbet-rails-0.7.22 lib/sorbet-rails/model_plugins/base.rb
sorbet-rails-0.7.20 lib/sorbet-rails/model_plugins/base.rb
sorbet-rails-0.7.19 lib/sorbet-rails/model_plugins/base.rb
sorbet-rails-0.7.18 lib/sorbet-rails/model_plugins/base.rb
sorbet-rails-0.7.5 lib/sorbet-rails/model_plugins/base.rb