Agar tumhe apne Rails app mein file upload feature banana hai aur tum soch rahe ho ki “Arey, yeh toh pura din khich jayega!”β¦ toh thanda rakho! Rails mein file upload setup karna samosa banane se bhi easy hai. Chalo dekhte hain kaise:
1. Active Storage: Rails ka Magic Wand
Rails 5.2+ ne diya hai ek ready-made solution: Active Storage. Iske bina:
- Tumhe 10 gem install karni padti thi π
- Config ke chakkar mein 4 coffee pi ni padti thi βοΈβοΈβοΈβοΈ
Ab? Bas ek command aur ho gaya kaam!
2. Setup: 3 Steps Mein Jugaad
Step 1: Active Storage Install Karo
“`bash
rails active_storage:install
rails db:migrate
Yeh do commands chalate hi, Rails khud bana dega `active_storage_blobs` aur `active_storage_attachments` tables. Database ka tension? **Zero!**
**Step 2: Model Mein Attachment Declare Karo**
Maano humein `User` model mein profile picture upload karni hai:
ruby
class User < ApplicationRecord
has_one_attached :avatar # “avatar” naam se file attach hogi
end
**Step 3: Form Mein File Field Add Karo**
erb
<%= form_with model: @user do |form| %>
<%= form.file_field :avatar %>
<% end %>
**Basssss!** Backend setup ho gaya. Kitna time laga? **5 minutes!** β±οΈ
---
### **3. Controller: Bina Tension ke Code**
Controller mein koi complex logic nahi:
ruby
def update
@user = User.find(params[:id])
@user.update(user_params) # File auto-attach ho jayegi!
end
private
def user_params
params.require(:user).permit(:name, :email, :avatar) # Avatar permit karo bas
end
Active Storage khud handle karega:
- File save karna π
- Content type check karna β
- Temporary storage mein rakhna π¦
---
### **4. Display Karne ka jugaad**
File dikhana bhi easy hai:
erb
<% if @user.avatar.attached? %>
<%= image_tag @user.avatar %>
<% else %>
Koi dp nahi hai, jaldi upload karo!
<% end %>
Variants (image resizing) ke liye alag se gem bhi nahi chahiye:
ruby
<%= image_tag @user.avatar.variant(resize: “100×100”) %>
---
### **5. Advanced? No Problem!**
**Cloud Storage?** `config/storage.yml` mein 2 line change:
yml
amazon:
service: S3
access_key_id: <%= Rails.application.credentials.aws[:access_key_id] %>
**Validations?** Gem add karo `active_storage_validations` aur:
ruby
class User < ApplicationRecord
validates :avatar, content_type: [‘image/png’, ‘image/jpg’]
end`` **PDF/Excel Upload?** Bas
has_one_attached :resume` declare karo!
6. Kyu Itna Easy Hai?
- Zero Config: Default mein Local disk storage chalu ho jati hai.
- Cloud Integration: AWS S3, Google Cloud, Microsoft Azure – sab ke liye built-in support.
- Direct Uploads: Active Storage JS se browser se direct cloud upload!
- Minitest/RSpec: Testing mein bhi helper methods milte hain.
Pro Tip: Agar Active Storage Kam Na Kare?
Kuch developers prefer karte hain:
- CarrierWave: Zyada customization chahiye toh.
- Shrine: Flexibility chahiye toh.
Par 90% cases mein Active Storage kaafi hai!
Conclusion: Chalo Upload Karo!
File upload in Rails:
- Active Storage setup β 5 min β±οΈ
- Model + Controller update β 2 min β‘
- Form + View β 3 min π¨
Total 10 minutes mein tumhara feature ready! π―
Aur yaad rakho:
“Rails ka philosophy hai – Convention over Configuration
File upload mein bhi wohi philosophy kaam aati hai!”
Ab jaake apne app mein has_one_attached
try karoβ¦ aur phir mujhe batana: “Yaar, itna easy tha toh maine pehle kyu nahi kiya?” π
Final Advice:rails active_storage:install
β has_one_attached
β file_field
β Done! π