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