active-storage-setup

Active Storage Setup for Rails 8

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "active-storage-setup" with this command: npx skills add thibautbaissac/rails_ai_agents/thibautbaissac-rails-ai-agents-active-storage-setup

Active Storage Setup for Rails 8

Overview

Active Storage handles file uploads in Rails:

  • Cloud storage (S3, GCS, Azure) or local disk

  • Image variants (thumbnails, resizing)

  • Direct uploads from browser

  • Polymorphic attachments

Quick Start

Install Active Storage (if not already)

bin/rails active_storage:install bin/rails db:migrate

Add image processing

bundle add image_processing

Configuration

Storage Services

config/storage.yml

local: service: Disk root: <%= Rails.root.join("storage") %>

test: service: Disk root: <%= Rails.root.join("tmp/storage") %>

amazon: service: S3 access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %> secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %> region: eu-west-1 bucket: <%= Rails.application.credentials.dig(:aws, :bucket) %>

google: service: GCS credentials: <%= Rails.root.join("config/gcs-credentials.json") %> project: my-project bucket: my-bucket

Environment Config

config/environments/development.rb

config.active_storage.service = :local

config/environments/production.rb

config.active_storage.service = :amazon

Model Attachments

Single Attachment

app/models/user.rb

class User < ApplicationRecord has_one_attached :avatar

With variant defaults

has_one_attached :avatar do |attachable| attachable.variant :thumb, resize_to_limit: [100, 100] attachable.variant :medium, resize_to_limit: [300, 300] end end

Multiple Attachments

app/models/event.rb

class Event < ApplicationRecord has_many_attached :photos

has_many_attached :documents do |attachable| attachable.variant :preview, resize_to_limit: [200, 200] end end

TDD Workflow

Active Storage Progress:

  • Step 1: Add attachment to model
  • Step 2: Write model spec for attachment
  • Step 3: Add validations (type, size)
  • Step 4: Create upload form
  • Step 5: Handle in controller
  • Step 6: Display in views
  • Step 7: Test upload flow

Testing Attachments

See testing.md for model specs, factory traits, and request specs.

Key patterns:

  • Use fixture_file_upload in request specs

  • Define :with_avatar factory traits using after(:build)

  • Test be_attached and variant presence in model specs

Validations

Use the active_storage_validations gem for declarative validation, or write manual validate methods. See validations.md for both approaches.

Gemfile

gem 'active_storage_validations'

Image Variants

Define named variants on the model attachment using resize_to_fill , resize_to_limit , or resize_to_cover . See variants-and-views.md for variant operations, view helpers, and form examples.

Controller and Service Handling

  • Permit :avatar for single uploads, photos: [] for multiple

  • Use purge to remove attachments, with optional Turbo Stream response

  • Use rails_blob_path or send_data for downloads

See controller-and-service.md for full controller examples, service methods, direct uploads setup, and performance tips.

Checklist

  • Active Storage installed and migrated

  • Storage service configured

  • Image processing gem added (if using variants)

  • Attachment added to model

  • Validations added (type, size)

  • Variants defined

  • Controller permits attachment params

  • Form handles file upload

  • Tests written for attachments

  • Direct uploads configured (if needed)

References

  • testing.md - Model specs, factory traits, request specs

  • validations.md - Gem-based and manual validation examples

  • variants-and-views.md - Variant definitions, view helpers, upload forms

  • controller-and-service.md - Controllers, service methods, direct uploads, performance

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

hotwire-patterns

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

i18n-patterns

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

solid-queue-setup

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

rails-controller

No summary provided by upstream source.

Repository SourceNeeds Review