用途:在 Rails 8 应用中配置 Active Storage,实现文件上传、图片附件与文档存储,支持本地磁盘或 S3、GCS、Azure 等云存储,并提供图片变体与浏览器直接上传。
主要能力:单附件(has_one_attached)与多附件(has_many_attached);图片变体(resize_to_limit、resize_to_fill,可转 WebP 并设质量);手动或使用 active_storage_validations gem 做类型与大小校验;视图中判断 attached? 并渲染变体;Minitest 模型与控制器测试;表单文件字段与 direct_upload;用 with_attached_avatar 等避免 N+1。
使用方式:先执行 bin/rails active_storage:install、bin/rails db:migrate、bundle add image_processing;在 config/storage.yml 配置 local、test、amazon 等服务,并在各环境设置 config.active_storage.service;在模型中声明附件与变体;控制器 permit 附件参数(多附件用 photos: []);直接上传需在 application.js 中 import * as ActiveStorage from "@rails/activestorage" 并调用 ActiveStorage.start(),表单字段加 direct_upload: true。
适用场景:需要为 Rails 应用添加头像、照片、文档等上传功能,并希望统一处理存储、缩略图与上传测试。
限制:资料未提供具体版本兼容范围、云服务凭据获取方式、价格或性能基准;示例中的 AWS 区域与凭据键仅为演示,需按实际环境替换。