attachment_fu problem:

Hi everyone,

I was trying to do image upload by using attachment_fu but got no lucky. I have 2 models: album and cover. Each album is associated with only one cover. The database is like:

create_table :covers do |t|       t.integer :album_id       t.timestamps       # the following fields are required by attachement_fu       t.integer :parent_id       t.string :content_type       t.string :filename       t.string :thumbnail       t.integer :size       t.integer :width       t.integer :height end

create_table :albums, :force => true do |t|       t.integer :cover_id       t.string :title end

The form is like: <% error_messages_for :album %> <% form_for(@album, :html => { :multipart => true }) do |f| %>   <p>     <%= label :album, :title %>     <%= f.text_field :title %>   </p>   <p>     <%= label :album, :cover %>     <%= f.file_field :uploaded_cover_data %>     <span class="hint" >        We accept JPEG, GIF, or PNG files up to 500 KB.     </span>   </p>   <p>     <%= f.submit "Create" %>   </p> <% end %>

The controller is like: Class AlbumController < ActiveController::Base   ...   def create     @album = Album.new(params[:album])

    respond_to do |format|       if @album.save_with_cover         flash[:notice] = 'Album was successfully created.'         format.html { redirect_to(@album) }         format.xml { render :xml => @album, :status => :created, :location => @album }       else         format.html { render :action => "new" }         format.xml { render :xml => @album.errors, :status => :unprocessable_entity }       end     end   end end

The model is like: class Cover < ActiveRecord::Base   belongs_to :album   has_attachment :content_type => :image,                  :storage => :file_system,                  :max_size => 1.megabytes,                  :resize_to => '384, 256>',                  :processor => "ImageScience",                  :thumbnails => { :large => '96, 96>',                                   :medium => '64, 64>',                                   :small => '48, 48>'}   validates_as_attachment end

class Album < ActiveRecord::Base   has_one :cover   attr_accessor :uploaded_cover_data   def save_with_cover     cover = Cover.new     begin       self.transaction do         if uploaded_cover_data && uploaded_cover_data.size > 0           cover.uploaded_data = uploaded_cover_data           cover.thumbnails.clear           self.cover = cover           cover.save! # the problem occurred here         end         save!       end     rescue       if cover.errors.on(:size)         logger.info("Uploaded image is too big (500-KB max).")         errors.add_to_base("Uploaded image is too big (500-KB max)." )       end       if cover.errors.on(:content_type)         logger.info("Uploaded image content-type is not valid.")         errors.add_to_base("Uploaded image content-type is not valid." )       end       false     end   end end

The problem lies in "cover.save!". The failure causes the transaction to roll back, thus no cover is stored. The image I uploaded is 332*433 with a size of 27KB. It's in the range of size. Where can the problem be? I have spent several hours on it but no luck. Can anyone give some some clues on it?

Xiahong