gpt4 book ai didi

ruby-on-rails - 禁用 ActiveModel 回调

转载 作者:数据小太阳 更新时间:2023-10-29 07:37:08 24 4
gpt4 key购买 nike

我发布了 an article on disabling ActiveModel callbacks ,但我不完全确定这是执行此类操作的最漂亮方法。

Mongoid::Timestamps 添加了一个更新 updated_at 字段的保存前回调。假设在某些情况下我不希望这样,并且我禁用了这样的回调:

class User
# I'm using Mongoid, but this should work for anything based on
# ActiveModel.
include Mongoid::Document
include Mongoid::Timestamps

def sneaky_update(attributes)
User.skip_callback(:save, :before, :set_updated_at)
User.update_attributes(attributes)
User.set_callback(:save, :before, :set_updated_at)
end

end

调用 skip_callback 然后调用 set_callback 再次设置已删除的回调是不是一个坏主意?你会怎么做? :)

最佳答案

这个怎么样?

module Mongoid
module Timestamps
attr_accessor :skip_updated_at

def set_updated_at_new
unless self.skip_updated_at
set_updated_at_org
end
end

alias set_updated_at_org set_updated_at
alias set_updated_at set_updated_at_new
end
end

class User
# I'm using Mongoid, but this should work for anything based on
# ActiveModel.
include Mongoid::Document
include Mongoid::Timestamps

def sneaky_update(attributes)
self.skip_updated_at = true
User.update_attributes(attributes)
self.skip_updated_at = false
end

end

关于ruby-on-rails - 禁用 ActiveModel 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3704915/

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