有没有一种方法可以使用delayed_job
gemafter_create
在后台运行模型回调函数?
我有一个private
函数用作after_create :get_geolocation
用户注册后运行的回调。
如何配置模型在后台运行?
是的,您应该能够从ActiveRecord回调中使delay_job任务入队。要安装和使用delay_job:
gem 'delayed_job_active_record'
至您Gemfile
并运行bundle install
。通过运行以下命令在数据库中创建delay_job支持表:
rails generate delayed_job:active_record
rake db:migrate
在您的模型中:
class MyModel < ActiveRecord::Base
after_commit :get_geolocation, on: :create
private
def get_geolocation
end
handle_asynchronously :get_geolocation
end
请注意,您应该使用after_commit
而不是after_create
安排作业,这样可以避免在提交事务之前执行作业的情况。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句