在某些rails控制器操作上设置超时

时间:2018-03-13 20:03:30

标签: ruby-on-rails

我有测验应用,其中有多个问题可供选择。

控制器操作如下

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分钟后显示消息或重定向到根页面。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

我认为最好的办法是使用类似Sidekiq的内容来推迟创建回复。你可以创建一个空的,并将id和params一起发送给一个worker,并将其余的工作延迟一段时间,比如30分钟。您需要一个工作人员,比如ReplyCreationWorker来调用控制器,然后您可以使用消息重定向以在30分钟内进行检查。