picture.rb


			
class Picture < ActiveRecord::Base
    has_attachment :content_type => :image, 
                 :storage => :file_system, 
                 :max_size => 500.kilobytes,
                 :resize_to => '320x200>',
                 :thumbnails => { :thumb => '100x100>' }

  validates_as_attachment
end

message.rb


			
class Message < ActiveRecord::Base
end

messages_controller.rb


			
class MessagesController < ApplicationController
  def index
    list
    render :action => 'list'
  end

  # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
  verify :method => :post, :only => [ :destroy, :create, :update ],
         :redirect_to => { :action => :list }

  def list
    @message_pages, @messages = paginate :messages, :per_page => 10
  end

  def show
    @message = Message.find(params[:id])
  end

  def new
    @message = Message.new
  end

  def create
    @message = Message.new(params[:message])
    @picture = Picture.new(params[:message])
    if @message.save
      flash[:notice] = 'Message was successfully created.'
      redirect_to :action => 'list'
    else
      render :action => 'new'
    end
  end

  def edit
    @message = Message.find(params[:id])
  end

  def update
    @message = Message.find(params[:id])
    if @message.update_attributes(params[:message])
      flash[:notice] = 'Message was successfully updated.'
      redirect_to :action => 'show', :id => @message
    else
      render :action => 'edit'
    end
  end

  def destroy
    Message.find(params[:id]).destroy
    redirect_to :action => 'list'
  end
end

new.rhtml


			

New message

<% form_for(:message, :url => { :action => 'create' }, :html => { :multipart => true }) do |f| -%> <%= render :partial => 'form' %> <%= f.file_field :uploaded_data %> <%= submit_tag "Create" %> <% end %> <%= link_to 'Back', :action => 'list' %>

_form.rhtml


			
<%= error_messages_for 'message' %>



<%= text_field 'message', 'title' %>


<%= text_field 'message', 'message' %>