Sha256: db1767b0c5ee3b46abe907d82e05c578623758736c2a7fa1398ea168928f4364

Contents?: true

Size: 1.11 KB

Versions: 2

Compression:

Stored size: 1.11 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)

      column_type.coder.try(:object_class) || Object
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sorbet-rails-0.7.4 lib/sorbet-rails/model_plugins/base.rb
sorbet-rails-0.7.3 lib/sorbet-rails/model_plugins/base.rb