加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-3 – 从attachment_fu升级到carrierwave的系统方

发布时间:2020-12-17 02:00:02 所属栏目:百科 来源:网络整理
导读:我正在努力将应用程序升级到Rails 3,并且attachment_fu被破坏,所以我转向了carrierwave.是否有一个系统的过程,我可以通过从attachment_fu升级到carrierwave?或者是它的教程?现在,我更感兴趣的是让数据库端的所有内容都正确.我正在使用attachment_fu和carri
我正在努力将应用程序升级到Rails 3,并且attachment_fu被破坏,所以我转向了carrierwave.是否有一个系统的过程,我可以通过从attachment_fu升级到carrierwave?或者是它的教程?现在,我更感兴趣的是让数据库端的所有内容都正确.我正在使用attachment_fu和carrierwave的文件系统存储选项.

我从http://ruby.simapse.com/2011/03/migrate-attachmentfu-to-carrierwave.html找到了一个模块UploaderFu,它告诉carrierwave使用与attachment_fu相同的目录和文件名.但这不是整个答案,只是其中的一部分.

例如,在db中,我有一个UserImage模型,其中包含:filename,:content_type,:size,:width,:height和:user_id属性.我添加了一个:user_avatar列,以及我的模型中的以下内容

attr_accessible :user_avatar
mount_uploader :user_avatar,UserAvatarUploader

究竟存储在哪个:user_avatar.它只是文件名吗?或者是其他东西?我只需要编写一个迁移来将数据移动到:filename(存储类似于“hello_world.png”)到:user_avatar?如果是这种情况我应该使用原始的:filename而不是创建:user_avatar列,对吗?

解决方法

安装上传器的列应该存储上传文件的“标识符”.默认情况下,它只是文件名,但您可以将其覆盖为几乎与记录ID不同的任何内容(因为在保存之前您无法知道它是什么).

要覆盖:在上传器类中,添加以下定义:

def identifier
       # This is what gets put in the database column!
       model.created_on
end

在这个例子中,我使用了模型中的created_on属性.如果要创建自己的存储机制,则需要能够通过此标识符唯一标识文件,因此请谨慎选择.

我建议重命名该列,以便描述正在上传的文件(如在carrierwave示例中).然后,您可以随时将标识符从文件名更改为其他内容.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读