我猜这个很容易做到,但我不知道怎么做,所以我想我会问。
如果在五分钟内没有发生任何事情,我的应用程序中有一个延迟作业,它在我的 Order 模型中调用 roll_back 方法。该方法既破坏了它被调用的实例,又在这样做之前,对关联的模型做了一堆相关的事情。该方法效果很好。
问题是,一旦方法完成运行,大多数用户将在刚刚删除的订单的显示页面上,我希望在时间用完并且调用 roll_back 方法后将用户重定向到不同的页面.
所以我最初只是在回滚方法中尝试了这个,就在“self.destroy”行之后。
redirect_to "/orders/new", :notice => "Blah"
不过没用。无论如何,互联网上的一些人告诉我重定向之类的操作应该在控制器中。
所以我转而将该行放在订单控制器的销毁方法中,就在@order.destroy 之后。我认为当 roll_back 方法调用 self.destroy 时,它会执行重定向——但这也不起作用,我猜是因为模型销毁没有通过控制器。
所以我不确定如何做到这一点。所有延迟作业/回滚的东西都在我的模型中,但我显然不应该/无法从模型中重定向用户。知道怎么做吗?
再次尝试这个,在我的方法中,以防它是一个路由错误(我知道orders_path存在)。
def destroy
@order = Order.find(params[:id])
@order.destroy
redirect_to orders_path, notice: "blah"
end