模型上的活动存储文件是否有回调after_update
或after_save
会在模型上的字段变更时被呼叫。然而,当您更新(或上传新档案)时,似乎没有呼叫回呼?
上下文:
class Person < ApplicationRecord
#name :string
has_one_attached :id_document
after_update :call_some_service
def call_some_service
#do something
end
end
上传新的id_document
时,不会调用after_update
,但当人员的name
发生变化时,会执行after_update
回调
6条答案
按热度按时间5vf7fwbs1#
目前看来,这个案子没有回调。
您可以做的是创建一个模型来处理活动存储附件的创建,该附件是在您将文件附加到您的个人模型时创建的。
因此创建一个新模型
通常,您已经在数据库中创建了模型表,因此无需迁移,只需创建此模型即可
ikfrs5lh2#
嗯,我只是想评论一下,但因为这是不可能的,没有代表。
Uelb的答案是可行的,但是你需要修复注解中的错误,并将其作为初始化器而不是模型添加。
hfsqlsce3#
在我的情况下,跟踪附件时间戳工作
xv8emn3q4#
来自@Uleb的答案让我完成了90%的工作,但为了完成起见,我将发布我的最终解决方案。
我遇到的问题是,我不能猴子补丁类(不知道为什么,即使要求类按照@user10692737没有帮助)
所以我复制了源代码(http://github.com/rails/rails/blob/fc 5dd 0 b85189811062 c85520 fd 70 de 8389 b55 aeb/活动存储/应用程序/模型/活动存储/附件. rb#L20)
并将其修改为包含回调
不确定这是最好的方法,如果我找到更好的解决方案,我会更新
ilmyapht5#
我所做的就是在我的记录中添加回拨:
如果添加、编辑或删除ActiveStorage对象,则调用此回调函数。我使用此回调函数检查是否有更改。
9avjhtql6#
这些都没有真正击中要害,但您可以通过以下博客文章https://redgreen.no/2021/01/25/active-storage-callbacks.html实现您所寻找的目标
我能够修改代码来处理附件而不是像这样的blob