新手问题 能不能在 view 里调用 rake tasks ?

syutran · 2021年03月01日 · 最后由 spike76 回复于 2021年03月03日 · 446 次阅读

我写了个数据检查的 task,每隔几天要检查一下数据的完整性,兼做一些其它的活。但我不想每次都登录后台 rails check:data,我想把它加到 view 里去执行,做个按钮什么的。有没有办法?

大 G 小度都没搜到~

task 的业务逻辑放到 controller 里去调用

task 是你在命令行里用的,如果你要在代码里调用的话,应该把逻辑拎出来放其他地方,然后 task 和 controller 都可以调用它。

这种是要定时执行的任务,定时任务比较流行用 sidekiq 配置定时任务。

换个思路,把这些逻辑代码抽到一个类里面,可以放在 app/services/下,然后rake调用这个类,controller也可以调用这个类

这类任务最好不要放到 controller 去。。。

弄个 cron 都比这靠谱。。。

whenever or sidekiq gem

谢谢各位。

我把这个 task 写到 Model 里了。

view 按钮 去执行 controller 里的 action

def check_data
    render plain: "非常耗时,请耐心等待~" #此处想省事
    Person.check_data
    redirect_to other_path
end

报错:Render and/or redirect were called multiple times in this action~

此处想省事,如果有个简单的 help_for 该多好啊~

syutran 回复

又 render 又 redirect_to 肯定不行诶。你可能想要个 flash[:notice]?

flash[:notice] 一闪就过,十分钟空白页,目似当即~

进度显示+sidekiq

非常耗时就该异步执行了撒

需要 登录 后方可回复, 如果你还没有账号请 注册新账号