Upload plików

Witam, mam taki problem jak w temacie. Przede mną implementacja wysyłania przez użytkownika plików do aplikacji. Tylko w moim zamyśle wysłane pliki mogę podzielić a dwa rodzaje: takie, które będą występować jako elementy wyglądu strony użytkownika (grafiki, buttony, itp) oraz takie, które będą zaliczać się do treści (zdjęcia, wszelkie pdfy, doci i wszystko inne). Oczywiście najlepiej trzymać takie pliki w różnych katalogach, prawda? Czy jeden model wystarczy mi do obsłużenia takiego czegoś, czy korzystać w dwóch? Czy może mieć jeden utworzony z jakiegoś pluginu i dwie klasy pochodne? Jakie pluginy są najlepsze do obsługi wysyłania plików? W jaki sposób Wy to rozwiązujecie?

Myśle, że wybór sposobu zapisu w katalogach zależy od ilości plików. Co do rozmieszczania dużej ilości plików w katalogach polecam prezentacje:
http://media.joyent.com/JHoffmanRailsConf-May2007.pdf od slajdu 160,

Zobacz plugin attachment_fu albo upload_column.

Dołączę się do tematu, ponieważ właśnie zaczynam się bawić z opcja uploadowania plików. Nie chcę korzystać z pluginów, chcę to napisać sam, ze po pierwsze umieć, po drugie całkowicie dostosować do mych wymagań. Więc przystępuje do dzieła, wspierając się tym manualem: http://manuals.rubyonrails.com/read/chapter/79. Żeby zrozumieć samo działanie procesu przesyłania plików, żywcem przepisuje kod i otrzymuje:

MODEL

[code] def src=(incoming_file)
@temp_file = incoming_file
@filename = incoming_file.original_filename
@content_type = incoming_file.content_type
end

def after_save
if @temp_file
logger.debug(“Uploaded file '#{RAILS_ROOT}/media/#{@filename}”)
File.open("#{RAILS_ROOT}/media/#{@filename}", “wb”) do |f|
f.write(@temp_file.read)
end
end
end[/code]
WIDOK:

[code]<% @title=“Dodaj grafikę”%>

<% form_tag :action => ‘create’, :multipart=>true do %>
<%= render :partial => ‘form’ %>
<%= submit_tag “Dodaj grafikę” %>
<% end %>[/code]
PARTIAL:

[code]<%= error_messages_for ‘image’ %>

<%= hidden_field ‘image’, ‘id’%>
Opis grafiki: <%= text_field ‘image’, ‘alt’, :maxlength=>255, :size=>32%>
Plik: <%= file_field ‘image’, ‘src’%>[/code]
Wszystko wydaję się wyglądać, jakby było tak samo jak w manualu. Ale, gdy przechodzę do wykonania akcji, to otrzymuje błąd:

undefined method `original_filename' for "blog.sql":String

Wygląda więc na to, że mój parametr src, nie jest traktowany jako plik, tylko zwykły string. Why i jak to zmienić?