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中删除文件. 希望这有助于某人. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |