Dynamically setting the image directory used by attachment_fu

25 views
Skip to first unread message

Eric Northam

unread,
Mar 4, 2007, 11:48:42 AM3/4/07
to Ruby on Rails: Talk
It took me a while to figure this out and I don't see any wiki pages
for attachment_fu so I figure I would just post this here.

I didn't like the way attachment_fu by default creates directories
under a given directory for a specific class e.g.

item_image/1/img_1.jpg
item_image/1/img_1_thumb.jpg
item_image/2/img_2.jpg
item_image/2/img_2_thumb.jpg
item_image/3/img_3.jpg
item_image/3/img_3_thumb.jpg

After a while you end up with ton of directories under the item_image
directory. Instead I wanted the images to be grouped by the item
object which has_many item_images. You can do that by adding the
following two methods to the item_image object.

# Make sure the related item is associated to the thumbnail child
before_thumbnail_saved do |record, thumbnail|
thumbnail.item = record.item
end

def full_filename(thumbnail = nil)
# Just to be sure the ID gets set
raise "Missing Item ID" if item_id.nil?
file_system_path = (thumbnail ? thumbnail_class :
self).attachment_options[:path_prefix].to_s
File.join(RAILS_ROOT, file_system_path, item_id.to_s,
attachment_path_id, thumbnail_name_for(thumbnail))
end

and in your Item class you add a condition since it makes it easier to
iterate over the images and for example call the image helpers

has_many :item_images,
:conditions => "parent_id is null"

Now all the directories will be grouped by the item_id.

Eric

MartOn

unread,
Mar 19, 2007, 5:30:16 AM3/19/07
to Ruby on Rails: Talk
Have you ever tried to have different path for thumbnails and
originals?
I have trouble with this because the thumbnail parameter is not set
when the class calls full_filname internally.

Have you ever used the thumbnail_class attribute to move the
thumbnails to a different model? I tried to do this, but with no
luck..
I cannot find any docs on it either.

/MartOn

Eric Northam

unread,
Mar 21, 2007, 9:52:42 PM3/21/07
to Ruby on Rails: Talk
Yeah the documentation isn't so hot. Unfortuantely I haven't tried too
change the thumbnail directory. Have you figured out how? As a quick
hack you can probably manually set a variable on your custom image
class. When the thumbnail is created the variable doesn't get copied
and you might be able to use that to determine if it's the thumbnail
or not.

Trevor Turk

unread,
Mar 29, 2007, 11:13:44 PM3/29/07
to Ruby on Rails: Talk
On Mar 5, 4:48 am, "Eric Northam" <e...@northam.us> wrote:
> It took me a while to figure this out and I don't see any wiki pages
> forattachment_fuso I figure I would just post this here.
>
> I didn't like the wayattachment_fuby default creates directories
> under a givendirectoryfor a specific class...

I did a little write-up on how I'm using attachment_fu. I cover how to
upload files without the subdirectories, and I also put up some code
that I use with Capistrano. Maybe it'll help somebody else coming
across this thread.

http://almosteffortless.com/2007/03/25/working-with-attachment_fu/


Reply all
Reply to author
Forward
0 new messages