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

ruby-on-rails-3 – Rails 3.1 RC4 remove_attachment不会删除!

发布时间:2020-12-17 03:45:14 所属栏目:百科 来源:网络整理
导读:在Rails 3.1 RC4上使用Carrierwave 0.5.4. 在Rails控制台中,我做: @foo.attachment 收益: = http://cdn.site_name.com/uploads/users/2/banners/banner.png 然而: @foo.remove_attachment! 收益: = [:remove_versions!] 该记录仍保留在DB中,但该文件在S3
在Rails 3.1 RC4上使用Carrierwave 0.5.4.

在Rails控制台中,我做:

@foo.attachment

收益:

=> http://cdn.site_name.com/uploads/users/2/banners/banner.png

然而:

@foo.remove_attachment!

收益:

=> [:remove_versions!]

该记录仍保留在DB中,但该文件在S3存储桶中被删除.

到底是怎么回事?

解决方法

啊,经过进一步调查.这是我发现的. remove_attachment!意味着从S3中删除图像,但并不意味着删除db中附件列中的上传器对象.这是Carrierwave的正常行为.

Jnicklas在https://github.com/jnicklas/carrierwave/commit/ecabc618d0fce22c1931c6d2eb134886e3b60e4c提供了测试,使用@ doc.remove_image = true.这是关键,因为当提交表单以删除附件/图像/照片/其他时.它们通常包含一个复选框,如下所示:

<input type="checkbox" value="1" name="user[remove_attachment]" id="user_remove_attachment">

可以使用辅助标记呈现为:

<%= f.check_box :remove_attachment %>

如果单击复选框并提交表单.参数将看起来像:

{"utf8"=>"?","_method"=>"put",.....,"user"=>{"remove_attachment"=>"1"},"controller"=>"das....}

Rails会将此解释为@ user.remove_attachment = true以清除db列并触发.remove_attachment!从S3中删除文件.
另外值得注意的是.如果在用户模型中定义了attr_accessible.然后它必须有:attachment,:remove_attachment.

希望这有助于某人.

(编辑:李大同)

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

    推荐文章
      热点阅读