title: Create sha1 path for paperclip attachment
body: <p>I'm trying to create a path that looks like this for my attachments.</p>
  
  <p><code>/4a6/341/f95/345b2b7a5f25b9c87da28feff52e549.pdf</code></p>
  
  <p>This is the code I've so far.</p>
  
  <pre><code># config/initializers/paperclip.rb
  Paperclip.interpolates :hash_path do |attachment, style|
    hash_path = ""
    token = attachment.instance.token
    3.times { hash_path += token.slice!(0..2) + "/" }
    hash_path + token
  end
  
  # app/models/report.rb
  class Report &lt; ActiveRecord::Base
    include Paperclip::Glue
    has_attached_file :attachment, url: "/reports/:hash_path.:extension", use_timestamp: false
    validates_attachment_content_type :attachment, content_type: ["application/pdf"]
    validates_uniqueness_of :token
  
    def create_token
      self.token ||= Digest::SHA1.hexdigest([
        Time.now.to_f.to_s,
        rand(10**5).to_s
      ].join)
    end
  end
  </code></pre>
  
  <p>When I'm trying to create a report I get the following error.</p>
  
  <pre><code>Errno::ENOENT: No such file or directory - /Users/linus/Documents/Projekt/public/reports/9b5/10f/92d/ea7215026a94db6b088b19.pdf
    from /Users/linus/.rvm/gems/ruby-2.0.0-p0/gems/paperclip-3.4.1/lib/paperclip/storage/filesystem.rb:39:in `initialize'
    from /Users/linus/.rvm/gems/ruby-2.0.0-p0/gems/paperclip-3.4.1/lib/paperclip/storage/filesystem.rb:39:in `open'
    from /Users/linus/.rvm/gems/ruby-2.0.0-p0/gems/paperclip-3.4.1/lib/paperclip/storage/filesystem.rb:39:in `block in flush_writes'
    from /Users/linus/.rvm/gems/ruby-2.0.0-p0/gems/paperclip-3.4.1/lib/paperclip/storage/filesystem.rb:37:in `each'
    from /Users/linus/.rvm/gems/ruby-2.0.0-p0/gems/paperclip-3.4.1/lib/paperclip/storage/filesystem.rb:37:in `flush_writes'
    from /Users/linus/.rvm/gems/ruby-2.0.0-p0/gems/paperclip-3.4.1/lib/paperclip/attachment.rb:214:in `save'
    from /Users/linus/.rvm/gems/ruby-2.0.0-p0/gems/paperclip-3.4.1/lib/paperclip/instance_methods.rb:17:in `block in save_attached_files'
    from /Users/linus/.rvm/gems/ruby-2.0.0-p0/gems/paperclip-3.4.1/lib/paperclip/instance_methods.rb:10:in `block in each_attachment'
    from /Users/linus/.rvm/gems/ruby-2.0.0-p0/gems/paperclip-3.4.1/lib/paperclip/instance_methods.rb:9:in `each'
    from /Users/linus/.rvm/gems/ruby-2.0.0-p0/gems/paperclip-3.4.1/lib/paperclip/instance_methods.rb:9:in `each_attachment'
    from /Users/linus/.rvm/gems/ruby-2.0.0-p0/gems/paperclip-3.4.1/lib/paperclip/instance_methods.rb:16:in `save_attached_files'
    from /Users/linus/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:416:in `_run__3108444119656637369__save__1047547937905355348__callbacks'
    from /Users/linus/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:405:in `__run_callback'
    from /Users/linus/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:385:in `_run_save_callbacks'
    from /Users/linus/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:81:in `run_callbacks'
    from /Users/linus/.rvm/gems/ruby-2.0.0-p0/gems/activerecord-3.2.13/lib/active_record/callbacks.rb:264:in `create_or_update'
  ... 23 levels...
    from /Users/linus/.rvm/gems/ruby-2.0.0-p0/gems/activerecord-3.2.13/lib/active_record/validations.rb:56:in `save!'
    from /Users/linus/.rvm/gems/ruby-2.0.0-p0/gems/activerecord-3.2.13/lib/active_record/attribute_methods/dirty.rb:33:in `save!'
    from /Users/linus/.rvm/gems/ruby-2.0.0-p0/gems/activerecord-3.2.13/lib/active_record/transactions.rb:264:in `block in save!'
    from /Users/linus/.rvm/gems/ruby-2.0.0-p0/gems/activerecord-3.2.13/lib/active_record/transactions.rb:313:in `block in with_transaction_returning_status'
    from /Users/linus/.rvm/gems/ruby-2.0.0-p0/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/database_statements.rb:192:in `transaction'
    from /Users/linus/.rvm/gems/ruby-2.0.0-p0/gems/activerecord-3.2.13/lib/active_record/transactions.rb:208:in `transaction'
    from /Users/linus/.rvm/gems/ruby-2.0.0-p0/gems/activerecord-3.2.13/lib/active_record/transactions.rb:311:in `with_transaction_returning_status'
    from /Users/linus/.rvm/gems/ruby-2.0.0-p0/gems/activerecord-3.2.13/lib/active_record/transactions.rb:264:in `save!'
    from /Users/linus/.rvm/gems/ruby-2.0.0-p0/gems/activerecord-3.2.13/lib/active_record/validations.rb:41:in `create!'
    from /Users/linus/Documents/Projekt/app/models/gig_subscription.rb:104:in `create_reports!'
    from (irb):1
    from /Users/linus/.rvm/gems/ruby-2.0.0-p0/gems/railties-3.2.13/lib/rails/commands/console.rb:47:in `start'
    from /Users/linus/.rvm/gems/ruby-2.0.0-p0/gems/railties-3.2.13/lib/rails/commands/console.rb:8:in `start'
    from /Users/linus/.rvm/gems/ruby-2.0.0-p0/gems/railties-3.2.13/lib/rails/commands.rb:41:in `&lt;top (required)&gt;'
    from script/rails:6:in `require'
    from script/rails:6:in `&lt;main&gt;'2.0.0p0 :002 &gt; exit
  </code></pre>
  
  <p>I'm using paperclip version <code>3.4.1</code> with rails <code>3.2.13</code> and Ruby <code>2.0.0</code>.
  What I'm I doing wrong?</p>