# File lib/couchrest/model/design.rb, line 134 def checksum! # Get a deep copy of hash to compare with @_original_hash = Marshal.load(Marshal.dump(to_hash)) # create a copy of basic elements base = self.dup base.delete('_id') base.delete('_rev') base.delete('couchrest-hash') flatten = lambda {|r| (recurse = lambda {|v| if v.is_a?(Hash) || v.is_a?(CouchRest::Document) v.to_a.map{|p| recurse.call(p)}.flatten elsif v.is_a?(Array) v.flatten.map{|p| recurse.call(p)} else v.to_s end }).call(r) } self['couchrest-hash'] = Digest::MD5.hexdigest(flatten.call(base).sort.join('')) end