所以我想弄清楚如何干净利落地做到这一点。试图让示例保持简单,我可以说我有一个对象MyMailMeeting
,其中我定义了两次我想要向会议中的人发送两封不同的电子邮件。
在我的MyMailMeeting
模型中,我想要定义两种方法(而不是拥有自己的延迟作业类),但我需要让这些方法看到对象中定义的时间,以便知道何时发送
def send_first
... do stuff
end
handle_asynchronously :send_first, :run_at => Proc.new { send_first_time }
问题在于,根据documentation,send_first_time
需要是一个类方法,并希望它是一个实例方法,以便我可以看到用户定义的时间。
我该怎么做?或者我只需要创建两个单独的Delayed_job类并执行以下操作:
Delayed::Job.enqueue(SendFirstJob.new, :run_at => send_first_time)
答案 0 :(得分:2)
我相信handle_asynchronously将对象传递给Procs for itstributs,所以:
handle_asynchronously :send_first, :run_at => Proc.new { |obj| obj.send_first_time }
您可以随时滚动自己的异步包装
def send_first_async(*args)
delay(:run_at => send_first_time).send_first(*args)
end
答案 1 :(得分:0)
我最终使用了第二种方法。虽然它不像我想的那样时间敏感。
如果有人对如何使send_first_time
成为基于用户输入的变量有答案,我很乐意接受它作为正确的答案。感谢。