Sha256: a9d0e30dda4e67ebf0ce6f526a39a42c028b75e482e8684707ca15ac231c6146

Contents?: true

Size: 1.17 KB

Versions: 1

Compression:

Stored size: 1.17 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(attribute: T.any(String, Symbol)).returns(T::Boolean) }
    def attribute_has_unconditional_presence_validation?(attribute)
      model_class.validators_on(attribute).any? do |validator|
        validator.is_a?(ActiveModel::Validations::PresenceValidator) &&
          !validator.options.key?(:if) &&
          !validator.options.key?(:unless)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sorbet-rails-0.6.3 lib/sorbet-rails/model_plugins/base.rb