Skip to content

Instantly share code, notes, and snippets.

@pithyless
Created October 4, 2011 15:18
Show Gist options
  • Select an option

  • Save pithyless/1261919 to your computer and use it in GitHub Desktop.

Select an option

Save pithyless/1261919 to your computer and use it in GitHub Desktop.
Carrierwave custom store_path

Carrierwave recommends overriding store_dir in the uploader, but it only gives you a way to modify the directory name, not the whole path with the file name. Overriding store_path let's you modify the entire path.

def store_path(for_file = filename)
  self.model.class.name.underscore.pluralize + "/" + self.model.slug + "/" + (version_name || :original).to_s + ".jpg"
end

This is the original:

def store_path(for_file=filename)
  File.join([store_dir, full_filename(for_file)].compact)
end
@denysonique

Copy link
Copy Markdown

So this changes the path of where the uploaded file will be saved in the file system, not the slug to acces the file via http?

@pithyless

Copy link
Copy Markdown
Author

Correct. It's been a while, but looking back at this, my version should be using File.join, not + "/". Although that's neither here, nor there.

@denysonique you should definitely look at the existing carrierwave source (eg. compare store_path to the one above). In six months, a lot may have changed...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment