gpt4 book ai didi

ruby-on-rails - Rails - 在参数中使用 run_at 延迟特定方法的作业/指定何时发布

转载 作者:行者123 更新时间:2023-12-04 07:44:04 27 4
gpt4 key购买 nike

我在这里有点不知所措。
例如,我只是想在用户定义的时间延迟 checkin 。我想让它尽可能简单。
编辑 : 解决了,见下。

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 被保存, Action 被执行(没有请求的@time 延迟),但我仍然得到一个错误:
ArgumentError in MyController#new_checkin
Cannot enqueue items which do not respond to perform

我错过了什么?在用户请求延迟的情况下,我如何执行此延迟作业?

谢谢!

更新
感谢下面的@Roman,不知道你可以传递参数来延迟:
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

关于ruby-on-rails - Rails - 在参数中使用 run_at 延迟特定方法的作业/指定何时发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6034111/

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