Module: Mongoid::Signature
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/mongoid/signature.rb
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
- #sign! ⇒ Object
- #signature_string ⇒ Object
- #unique_signature? ⇒ Boolean
- #validate_unique_signature ⇒ Object
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_string ⇒ Object
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
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_signature ⇒ Object
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 |