Sha256: 46d6c6b7f84fd02fd759ed80fe2237ed83d253d9e4bb6f19761829808a975657

Contents?: true

Size: 1.21 KB

Versions: 9

Compression:

Stored size: 1.21 KB

Contents

require "active_support/concern"

module Protobuf
  module ActiveRecord
    module Validations
      extend ::ActiveSupport::Concern

      module ClassMethods
        # Validates whether the value of the specified attribute is available in
        # the given Protobuf Enum. The enumeration should be passed as a class
        # that defines the enumeration:
        #
        # ```
        # class User < ActiveRecord::Base
        #   include ::Protoable
        #
        #   validates_enumeration_of :role_type, :with => RoleType, :allow_nil => true
        # end
        # ```
        #
        # In this example, RoleType is a defined as a protobuf enum.
        #
        # It accepts the same options as `validates_inclusion_of` (the :in option
        # is automatically set and will be overwritten).
        #
        def validates_enumeration_of(*args)
          options = args.extract_options!
          enumerable = options.delete(:with)

          raise ArgumentError, ":with must be specified" if enumerable.nil?

          if enumerable < ::Protobuf::Enum
            options[:in] = enumerable.all_tags
          end

          args << options

          validates_inclusion_of(*args)
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
protobuf-activerecord-7.0.0 lib/protobuf/active_record/validations.rb
protobuf-activerecord-6.1.0 lib/protobuf/active_record/validations.rb
protobuf-activerecord-6.0.0 lib/protobuf/active_record/validations.rb
protobuf-activerecord-5.2.0 lib/protobuf/active_record/validations.rb
protobuf-activerecord-5.1.0 lib/protobuf/active_record/validations.rb
protobuf-activerecord-5.0.0 lib/protobuf/active_record/validations.rb
protobuf-activerecord-5.1.0.beta lib/protobuf/active_record/validations.rb
protobuf-activerecord-5.0.0.beta lib/protobuf/active_record/validations.rb
protobuf-activerecord-3.6.1 lib/protobuf/active_record/validations.rb