Sha256: 1731832178beb1eda4fec7abb8711b51150f2c0eaf5ff839dd9e62b4fb7661fe

Contents?: true

Size: 1.01 KB

Versions: 4

Compression:

Stored size: 1.01 KB

Contents

module Neo4j
  module Validations
    class UniquenessValidator < ActiveModel::EachValidator
      def initialize(options)
        super(options.reverse_merge(:case_sensitive => true))
      end

      def setup(klass)
        @attributes.each do |attribute|
          if klass.index_type_for(attribute) != :exact
            raise "Can't validate property #{attribute} on class #{klass} since there is no :exact lucene index on that property or the index declaration #{attribute} comes after the validation declaration in #{klass} (try to move it before the validation rules)"
          end
        end
      end

      def validate_each(record, attribute, value)
        if record.class.find("#{attribute}: #{value}")
          record.errors.add(attribute, :taken, options.except(:case_sensitive, :scope).merge(:value => value))
        end
      end
    end

    module ClassMethods
      def validates_uniqueness_of(*attr_names)
        validates_with UniquenessValidator, _merge_attributes(attr_names)
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
neo4j-1.0.0.beta.19 lib/neo4j/rails/validations/uniqueness.rb
neo4j-1.0.0.beta.18 lib/neo4j/rails/validations/uniqueness.rb
neo4j-1.0.0.beta.17 lib/neo4j/rails/validations/uniqueness.rb
neo4j-1.0.0.beta.16 lib/neo4j/rails/validations/uniqueness.rb