所以我决定向 ActiveStorage::Attachment 对象添加一个 url
attr_accessor。
在开发中,补丁会保留一段时间,直到它似乎“已丢失”。这意味着它工作了几分钟,然后就不再工作了。然后我需要重新启动服务器才能再次应用补丁。我相信我没有正确打补丁,我需要这方面的建议。
这是我尝试过的:
lib/ext/active_storage/attachment.rb
第一次尝试:
module ActiveStorageUrl
extend ActiveSupport::Concern
included do
attr_accessor :url
end
end
ActiveStorage::Attachment.send :include, ActiveStorageUrl
第二次尝试
class ActiveStorage::Attachment < ActiveRecord::Base
attr_accessor :url
end
顺便说一下,在这两种情况下它都加载了这个:
config/initializers/monkey_patches.rb
require 'ext/active_storage/attachment'
所以当它工作时我没有错误消息,但过了一会儿补丁“消失”(缺少更好的术语),我得到以下错误,告诉我我的 attr_accessor 不存在了。 Rails 一定是重新加载了 ActiveStorage 类,而我的补丁丢失了。
Module::DelegationError in Products#images
url delegated to blob, but blob is nil
最佳答案
我将我的 ActiveStorage::Attachment
MonkeyPatch 放在 /app/models/active_storage/
如果附件已更改,我添加了一个回调以得到通知。它始终运行良好。
也许这就是问题所在。
关于ruby-on-rails - 修补 ActiveStorage::Attachment 的猴子丢失了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55109738/