ruby-on-rails - 使用 Paperclip gem 验证上传时的附件内容

标签 ruby-on-rails paperclip

Paperclip 具有验证器方法,用于验证文件的存在、大小和内容类型。但是有没有办法在保存记录之前验证文件的内容?

我试着做 validate :my_method并从 [attachment].path 打开文件在 my_method ,但这当然会失败,因为在保存记录之前,附件尚未移动到文件系统中的最终放置位置。

编写自定义 Paperclip 后处理器似乎是一种选择,因为它可以在保存记录之前访问属于附件的 File 对象,但是出现故障的处理器不会在保存记录之前使记录无效。

有没有好的方法可以做到这一点?我还能如何确保我的应用程序中只有符合要求的文件? (如果文件无效,我是否可以使用其他回调来优雅地删除整个记录?)

编辑:哦。特别是,从 after_save 回调中引发 ActiveRecord::Rollback 会做一些理智的事情吗?

最佳答案

啊,但是您可以在保存记录之前从验证器访问 File 对象,方法是调用 [attachment].to_file .针对 [attachment].to_file.path 运行我的解析器(而不是 attachment.path )在 my_method似乎工作得很好。

https://stackoverflow.com/questions/7047183/how-to-set-an-attribute-for-a-model-instance-in-a-paperclip-post-process-callback , [attachment].queued_for_write[:original].path也可能是一种选择。

关于ruby-on-rails - 使用 Paperclip gem 验证上传时的附件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7044645/

相关文章:

ruby-on-rails - 使用ujs手动提交远程表单的rails方式

ruby-on-rails-3 - 回形针文件大小验证错误消息

ruby-on-rails - 给定长度的完全随机标识符

ruby-on-rails - has_one 和belongs_to 与同一张表的关联

javascript - 在保存之前临时创建和关联模型 [Rails、Ajax、Google map ]

imagemagick - 修改样式后新的回形针指纹?

ruby-on-rails - Rails 4 SSL 错误停止使用回形针直接上传 s3

ruby-on-rails - 运行迁移时出现重复列名错误

ruby-on-rails - Rails 4.2.0 - Errno::EACCES(权限被拒绝@dir_s_mkdir -/files)

ruby-on-rails - ruby block (产量)