回形针未定义方法 'after_commit'

Paperclip undefined method 'after_commit'

我正在开发一个项目,该项目使用带有 ruby (2.2.7) 和 rails (3.2.22) 的回形针 (4.3.7) 将图像上传到 S3。在本地,一切都很顺利,但是当我将项目推送到 Heroku 时,我收到了这个错误:

/app/vendor/bundle/ruby/2.2.0/gems/paperclip-4.3.7/lib/paperclip/has_attached_file.rb:94:in `add_active_record_callbacks': undefined method `after_commit' for JobApplication:Class (NoMethodError)

有人知道可能发生的事情吗?

你能更新到 Rails 的更新版本吗? Paperclip's github repo 说他们需要 rails >= 4.2。我认为您可能遇到了回形针中的错误。

如果您无法升级 Rails,请考虑向 JobApplication class 添加一个 after_commit 方法。您可能需要查看回形针源代码以找出他们试图添加的挂钩,并决定您是否可以在没有该功能的情况下生活,或者是否需要重新创建它。它可能非常重要,也可能不重要。

在推送到 Heroku 之前,你完成了吗asset_precomplie?

rake assets:precompile RAILS_ENV=production

rake assets: precompile (RAILS_ENV=production bundle exec rake assets: precompile is the exact rake task)

由于预编译仅在生产模式下完成,因此无需显式指定环境。

希望它会起作用:)

嗯,我已经通过使用旧版本的回形针 (2.7.0) 并将回形针配置移动到模型本身而不是 production.rb 文件来解决问题。无论如何,感谢您的帮助!