【发布时间】:2018-04-29 20:16:56
【问题描述】:
我在我的模型中使用 after_find,但在某些情况下想禁用。 我正在使用 .where after_find 仍在运行,但在文档中说它仅适用于以下方法。为什么会这样?
all
first
find
find_by
find_by_*
find_by_*!
find_by_sql
last
我的api(葡萄框架)是
delete '/delete_user' do
user_id = params[:user_id] #authenticate_current_user!
@user_profile = ::UserProfile.where(user_id: user_id).
@user_profile.destroy_all
end
【问题讨论】:
-
您从哪个文件中获得了这些信息? rails documentation 表示:“为每个由查找器找到并实例化的对象触发
after_find和after_initialize回调”。自 v4 以来,find_by_*方法已被弃用/移出核心轨道,并在轨道 5 中完全删除。 -
您能出示您的代码吗? “在某些情况下禁用”是什么意思?您的问题可能有一个更干净的解决方案,根本不涉及
after_find。 -
你能用自然语言描述你什么时候不想触发这个回调吗?
-
看到“只要 Active Record 从数据库加载一个 RECORD,就会调用 after_find 回调。如果两者都定义了,则在 after_initialize 之前调用 after_find。”这也在文档中。我怀疑它是否适用于 where 子句,因为它在其中写了 A RECORD。
标签: ruby-on-rails ruby activerecord callback