我有测验应用,其中有多个问题可供选择。
控制器操作如下
replies_controller.rb
#the questions appear on `new` page
def new
@quiz = Quiz.find(params[:quiz_id])
@reply = @quiz.replies.build
@quiz.questions.each {|question| @reply.answers.build(question: question)}
end
#once user submits the answers it goes to create
def create
@quiz = Quiz.find(params[:quiz_id])
@reply = @quiz.replies.build reply_params
if @reply.save
redirect_to @quiz, notice: "Thank you for taking the quiz"
end
end
我想要实现的是,在30分钟之后它应该自动创建。如果创建空params是一个坏主意,那么至少应该有办法在30分钟后显示消息或重定向到根页面。我怎样才能做到这一点?
答案 0 :(得分:0)
我认为最好的办法是使用类似Sidekiq的内容来推迟创建回复。你可以创建一个空的,并将id和params一起发送给一个worker,并将其余的工作延迟一段时间,比如30分钟。您需要一个工作人员,比如ReplyCreationWorker
来调用控制器,然后您可以使用消息重定向以在30分钟内进行检查。