Skip to content

afeiship/rails-module-carrierwave

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rails-module-carrierwave

Rails module for carrierwave.

step by step:

  • install gem:
gem 'carrierwave', '~> 0.10.0'
gem 'mini_magick', '~> 4.3'
  • generate basic code:
rails g scaffold Pet name:string description:text image:string
rake db:migrate
  • create carrievave config file:
# *config/initializers/carrier_wave.rb*
require 'carrierwave/orm/activerecord'
rails generate uploader Image
# you can modify the config
  • First, uncomment the MiniMagick line. That should be line 7.
include CarrierWave::MiniMagick
  • model with validates:
class Pet < ApplicationRecord
    mount_uploader :image, ImageUploader


    validates_processing_of :image
    validate :image_size_validation
    
    private
    def image_size_validation
        errors[:image] << "should be less than 500KB" if image.size > 0.5.megabytes
    end
end
  • modify html.erb part:
    • show part:
    ## old:
    <%= @pet.image %>
    ## new:
    <%= image_tag @pet.image.thumb.url %>
    • upload part:
    <!--Old-->
    <div class="field">
        <%= f.label :image %>
        <%= f.file_text :image %>
    </div>
    
    <!--New-->
    <div class="field">
        <%= f.label :image %>
        <%= f.file_field :image %>
    
    
        <% if f.object.image? %>
            <%= image_tag f.object.image.thumb.url %>
            <%= f.label :remove_image %>
            <%= f.check_box :remove_image %> 
        <% end %>
    </div>

resources: