Carrierwave不保存文件或在数据库中输入记录

时间:2014-11-23 21:19:50

标签: ruby-on-rails ruby-on-rails-4 carrierwave

我正在尝试使用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

现在,当我上传文件时,没有任何错误或任何内容被抛出,但文件没有存储在我的磁盘上,也没有数据写入数据库。

我做错了什么?它可能是命名的东西吗?

2 个答案:

答案 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