gpt4 book ai didi

ruby-on-rails - 观察者与回调

转载 作者:行者123 更新时间:2023-12-03 08:14:42 25 4
gpt4 key购买 nike

我考虑过使用观察者或回调。
什么时候应该使用观察者?

F.e.您可以执行以下操作:

# User-model
class User << AR
after_create :send_greeting!

def send_greeting!
UserNotifier.deliver_greeting_message(self)
end

end

#observer
class UserNotifier << AR
def greeting_message(user)
...
end
end

或者你可以创建一个观察者并让它观察用户何时被创建......

你推荐什么?

最佳答案

要记住的一个非常重要的区别与 Milan Novota 的回答有关,即 ActiveRecord 上的回调能够取消被调用的操作和所有后​​续回调,而观察者则不能。

class Model < ActiveRecord::Base
before_update :disallow_bob

def disallow_bob
return false if model.name == "bob"
end
end

class ModelObserver < ActiveRecord::Observer
def before_update(model)
return false if model.name == "mary"
end
end

m = Model.create(:name => "whatever")

m.update_attributes(:name => "bob")
=> false -- name will still be "whatever" in database

m.update_attributes(:name => "mary")
=> true -- name will be "mary" in database

观察者只能观察,不能干预。

关于ruby-on-rails - 观察者与回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1531514/

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