Sha256: dc6e473d177ae6c830b3066bdee289c9ce786a9a9788b6aac9d2b62063074171
Contents?: true
Size: 1.54 KB
Versions: 1
Compression:
Stored size: 1.54 KB
Contents
module Remarkable::Mongoid module Matchers # Specify the document validates the uniqueness of the field's data # # examples: # it { should validate_uniqueness_of :dog } # # @param [Symbol] # # @return [Remarkable::Mongoid::Matchers::ValidateUniquenessOfMatcher] def validate_uniqueness_of(attr) ValidateUniquenessOfMatcher.new(attr) end class ValidateUniquenessOfMatcher attr_accessor :attr, :validation_type, :message, :scope def initialize(attr) self.attr = attr.to_sym end def with_message(message) self.message = message self end def scoped_to(scope) self.scope = scope.is_a?(Array) ? scope.map(&:to_sym) : scope.to_sym self end def matches?(subject) @subject = subject validations = @subject._validators[attr] if validations validation = validations.detect { |k| k.class == ::Mongoid::Validations::UniquenessValidator } validation && check_option(validation, :message) && check_option(validation, :scope) else false end end def description "validates that :#{attr} is unique" end def failure_message_for_should "\nUniqueness validation failure\nExpected: '#{attr}' to be unique" end private def check_option(validation, option) if self.send(option) validation.options[option] == self.send(option) else true end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
remarkable_mongoid-0.6.0 | lib/remarkable/mongoid/validate_uniqueness_of.rb |