Что вы можете сделать, это настроить другой контроллер и работать с ним. Что делает paperclip - это просто устанавливает дополнительный атрибут «photo» и методы, тем самым повторно используя собственные методы Rails .new и .update_attributes. Таким образом, когда вы вызываете /photos.xml с этой информацией, вы просто делаете обычное действие после публикации фотографии с дополнительным преимуществом настройки его изображения.
Когда вы делаете Object.photo = YOUR_PHOTO, вы фактически используете код Paperclip.
Итак, вы можете работать с чем-то вроде:
class ApplicationController < ActiveController::Base
def upload
photo = Photo.new
photo.photo = params[:photo]
# ... extra code
photo.save
render :text => "Ok"
end
end
И добавьте маршрут как:
map.upload "/upload(.:format)", :controller => "application", :action => "upload"
(или это эквивалент Rails3, если вы его используете)
Таким образом, когда вы делаете 'curl -F "photo=@/pics/pic.jpg" http://something/upload.xml',, вы вызываете действие загрузки и создаете фотографию, используя параметр' photo '. Photo = params [: photo] возьмет загруженный вами временный файл и продолжит выполнение обычных задач со скрепкой:)