gpt4 book ai didi

ruby-on-rails - rails 4 设计带有回形针,未定义的方法 after_commit

转载 作者:行者123 更新时间:2023-12-03 17:50:58 25 4
gpt4 key购买 nike

设计激活后我遇到了奇怪的问题。带有回形针属性 has_mongoid_attached_file 的模型返回异常:

undefined method `after_commit' for Item:Class

/home/student/.rvm/gems/ruby-2.1.0/bundler/gems/paperclip-c9c5227cb7f8/lib/paperclip/has_attached_file.rb:89:in `add_active_record_callbacks'
/home/student/.rvm/gems/ruby-2.1.0/bundler/gems/paperclip-c9c5227cb7f8/lib/paperclip/has_attached_file.rb:19:in `define'
/home/student/.rvm/gems/ruby-2.1.0/bundler/gems/paperclip-c9c5227cb7f8/lib/paperclip/has_attached_file.rb:4:in `define_on'
/home/student/.rvm/gems/ruby-2.1.0/bundler/gems/paperclip-c9c5227cb7f8/lib/paperclip.rb:179:in `has_attached_file'
mongoid-paperclip (0.0.8) lib/mongoid_paperclip.rb:70:in `has_mongoid_attached_file'

据我了解,在 gems/paperclip-3.5.3/lib/paperclip/has_attached_file.rb 中 after_commit 的可见性问题
def add_active_record_callbacks
name = @name
@klass.send(:after_save) { send(name).send(:save) }
@klass.send(:before_destroy) { send(name).send(:queue_all_for_delete) }
@klass.send(:after_commit, :on => :destroy) { send(name).send(:flush_deletes) }
end

在 Gemfile 中,我使用了各种 gem,包括 strong_parameters 和 protected_attributes,但没有取得任何进展。

编辑:
我注释行
@klass.send(:after_commit, :on => :destroy) { send(name).send(:flush_deletes) }
并现在质疑使用 mongoid 正确实现回形针

编辑:
https://github.com/thoughtbot/paperclip/pull/1425/files 中找到了更好的解决方案

最佳答案

问题是回形针使用 after_commit Hook 进行交易,而 Mongoid 不支持它们。我的建议是您修补 Paperclip 以提供交易的解决方法。

您也可以尝试 mongoid-paperclip ,我认为这就是你要找的。

关于ruby-on-rails - rails 4 设计带有回形针,未定义的方法 after_commit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21447417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com