我正在尝试使用Carrierwave在我的Rails应用程序中存储上传的文件。我有一个模型可以保存名为Episode
的(播客)剧集的数据。对于与该剧集相关联的音频文件,每集应该有一列upload
。为此,我创建了一个名为EpisodeUploader
的上传器,如下所示:
rails generate uploader Episode
注意:这有点令人困惑。我有一个名为 Episode 的模型 有一个名为 upload 的列,但上传者也称为Episode (最终将使用生成器命名 EpisodeUploader 。
要使我的模型使用EpisodeUploader
,我添加了一个名为upload
rails g migration add_upload_to_episodes upload:string
然后,在我的剧集模型中,我安装了上传器
mount_uploader :upload, EpisodeUploader
在我的表单中,我添加了一个像这样的文件字段:
= f.file_field :upload
现在,当我上传文件时,没有任何错误或任何内容被抛出,但文件没有存储在我的磁盘上,也没有数据写入数据库。
我做错了什么?它可能是命名的东西吗?
答案 0 :(得分:0)
确保您有权写入该文件。
答案 1 :(得分:0)
好的我明白了。我在搭建模型后添加了上传器。脚手架操作在我的Episode
模型
def episode_params
params.require(:episode).permit(:podcast_id, :name, :description)
end
我必须添加:上传到允许的参数列表:
def episode_params
params.require(:episode).permit(:podcast_id, :name, :description, :upload)
end