Module: Mongoid::Signature

Extended by:
ActiveSupport::Concern
Defined in:
lib/mongoid/signature.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#sign!Object



29
30
31
32
# File 'lib/mongoid/signature.rb', line 29

def sign!
  sig = (Digest::MD5.new << self.signature_string).to_s
  self.signature = sig if self.respond_to?(:signature)
end

#signature_stringObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/mongoid/signature.rb', line 11

def signature_string
  sig = ''
  self.sign_fields.each do |field|
    if self.respond_to?(field)
      if value = self.send(field)
        if value.respond_to?('signature_string')
          value = value.signature_string
        elsif value.respond_to?('to_s')
          value = value.to_s
        end
        sig << value if !value.blank?
      end  
    end
    sig << ';'
  end if self.sign_fields
  sig
end

#unique_signature?Boolean

Returns:

  • (Boolean)


34
35
36
37
38
39
40
41
# File 'lib/mongoid/signature.rb', line 34

def unique_signature?
  match = self.class.where(signature: self.signature).first
  if match.nil?
    true
  else
    match._id == self._id && self.class.where(signature: self.signature).count < 2
  end
end

#validate_unique_signatureObject



43
44
45
46
47
48
49
50
# File 'lib/mongoid/signature.rb', line 43

def validate_unique_signature
  if unique_signature? 
    true
  else
    errors.add(:base, "is a duplicate")
    false
  end
end