ruby-on-rails Rails:在另一个模型上回调

goqiplq2  于 2023-02-14  发布在  Ruby
关注(0)|答案(2)|浏览(167)

在我的一个应用程序中,有两种模型:CommentUser
例如,我希望能够在Comment更新时调用User中的方法;例如send_email。为什么不直接用Comment写send_email呢?因为那样我就和封装相矛盾了。
我的问题是,在另一个模型上调用回调方法的正确方法是什么?

after_update :user.send_email
a64a0gku

a64a0gku1#

after_update采用方法的名称。在您的示例中,:user.send_email不是有效的方法名称。一种方法是创建一个在用户对象上调用send_email的方法,然后将其注册为回调。有关Active Record Callbacks的完整文档,请参见Rails指南。

after_update :send_email

def send_email
  user.send_email
end
k75qkfdt

k75qkfdt2#

是的,你是对的,after_update可以用于回调。

#comment.rb
after_update :send_email_to_user
private
def send_email_to_user
  user.send_email
end    

#user.rb
def send_email
end

相关问题