ruby-on-rails – Rails – 使用params中的run_at /指定何时发布
发布时间:2020-12-16 19:10:35 所属栏目:百科 来源:网络整理
导读:我在这里有点不知所措. 我只是试图在用户定义的时间延迟签入.我想尽量简单. 编辑:解决,见下文. class MyController ApplicationController def new_checkin # default venue is "SubMate" @venue_id = params[:venue_id] || "4c2c3acd8abca59355760120" @ti
我在这里有点不知所措.
我只是试图在用户定义的时间延迟签入.我想尽量简单. 编辑:解决,见下文. class MyController < ApplicationController def new_checkin # default venue is "SubMate" @venue_id = params[:venue_id] || "4c2c3acd8abca59355760120" @time = params[:time] @checkin = Delayed::Job.enqueue(self.perform_checkin,:run_at => @time.minutes.from_now) end def perform_checkin foursquare.checkins.add(:venueId => @venue_id,:broadcast => "private") end 结果很奇怪:delayed_job是保存,执行操作(没有请求的@time延迟),我仍然收到错误: ArgumentError in MyController#new_checkin Cannot enqueue items which do not respond to perform 我错过了什么?如何在用户请求延迟的情况下执行此延迟作业? 谢谢! UPDATE def new_checkin @venue_id = params[:venue_id] @time = params[:time] @checkin = self.perform_checkin end def perform_checkin foursquare.checkins.delay({:run_at => @time.minutes.from_now}).add(:venueId => @venue_id,:broadcast => "private") end 解决方法
如果你想以这种方式排队,那么正如错误所暗示的那样,排队的对象应该响应:perform.检查这个
http://asciicasts.com/episodes/171-delayed-job
您还可以使用:handle_asynchronously或.delay.method.检查: https://github.com/collectiveidea/delayed_job (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |