Для удобной работы с картинками я использую плагин Paperclip. Сам процесс установки плагина описан на официальном сайте. Ниже я описал процесс установки.

  1. Модель:
    has_attached_file :photo, :styles => { :small => "150x150>" },
                      :url  => "/images/model_name/:id/:style/:basename.:extension",
                      :path => ":rails_root/public/images/model_name/:id/:style/:basename.:extension"
    
    validates_attachment_presence :photo
    validates_attachment_size :photo, :less_than => 2.megabytes #Ограничение размер файла 2Mb
    validates_attachment_content_type :photo, :content_type => ['image/jpg', 'image/jpeg', 'image/gif', 'image/png'] #Ограничение типа файла (только jpeg, jpg, gif, png)
    
  2. Миграция:
    add_column :table_name, :photo_file_name,    :string
    add_column :table_name, :photo_content_type, :string
    add_column :table_name, :photo_file_size,    :integer
    add_column :table_name, :photo_updated_at,   :datetime
    
  3. Форма для закачки:
    form_for :user, :html => { :multipart => true } do |form|
        form.file_field :photo
    end
    
  4. Контроллер:
    def create
      @user_photo = Model_name.create(params[:user])
    end
    
  5. Обзор:
    image_tag @user.photo.url #Оригинальный размер
    image_tag @user.photo.url(:small) #Размер, указанный в модели
    

Добавить комментарий