Sha256: 3b6ca991b18d4fa7f7944c960d948158c93c888c238827a825cff4a61fa3c5b7

Contents?: true

Size: 791 Bytes

Versions: 1

Compression:

Stored size: 791 Bytes

Contents

require 'active_model/validator'

module ROM
  module Model
    module Validator
      class UniquenessValidator < ActiveModel::EachValidator
        attr_reader :klass, :message

        def initialize(options)
          super
          @klass = options.fetch(:class)
          @message = options.fetch(:message) { :taken }
        end

        def validate_each(validator, name, value)
          validator.errors.add(name, message) unless unique?(name, value)
        end

        private

        def relation
          rom.relations[relation_name]
        end

        def relation_name
          klass.relation
        end

        def rom
          ROM.env
        end

        def unique?(name, value)
          relation.unique?(name => value)
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rom-rails-0.3.0.beta1 lib/rom/rails/model/validator/uniqueness_validator.rb