module Carrierwave::Digest::ClassMethods

Public Instance Methods

ensure_digest_for(name) click to toggle source
# File lib/carrierwave/digest.rb, line 11
def ensure_digest_for(name)
  define_method("#{name}_digest") do
    if send("#{name}_changed?") &&
      send("#{name}").file.present? &&
      send("#{name}").file.respond_to?(:path) &&
      File.exists?(send("#{name}").file.path)
      ::Digest::SHA1.file(send("#{name}").file.path).hexdigest
    else # Reading image
      self["#{name}_digest".to_sym]
    end
  end

  define_method("update_#{name}_digest") do
    self.send("#{name}_digest=", send("#{name}_digest")) if send("#{name}_changed?")
  end
  before_save "update_#{name}_digest".to_sym if(respond_to?(:before_save))
end