在Active Storage中,blob和附件数据是保存在数据库中的,而不是直接保存在存储中。下面是一个使用Active Storage保存和获取附件的代码示例:
首先,确保你已经安装了Active Storage和相应的存储适配器(如:AWS S3、Google Cloud Storage等)。然后,运行rails active_storage:install
生成必要的迁移文件。
在你的模型中,添加has_one_attached
或has_many_attached
方法来定义附件关联:
class Post < ApplicationRecord
has_one_attached :image
end
在你的控制器中,使用attach
方法将文件附加到附件:
class PostsController < ApplicationController
def create
@post = Post.new(post_params)
@post.image.attach(params[:post][:image]) # 将文件附加到附件
if @post.save
redirect_to @post
else
render 'new'
end
end
# ...
end
在视图中,使用file_field
方法创建一个文件上传字段:
<%= form_with(model: @post, local: true) do |form| %>
<%= form.file_field :image %>
<%= form.submit %>
<% end %>
在显示附件时,可以使用url
方法获取附件的URL:
<%= image_tag @post.image.url if @post.image.attached? %>
注意:上述代码只是一个简单的示例,你需要根据自己的需求进行适当的修改和扩展。
参考文档: