调用Rake :: Rails任务导致“不知道如何构建任务……”
-
05-10-2019 - |
题
试图在控制器方法上集成一些友好的宝石功能。
从本质上讲,我有一个市场对象,该对象的URL基于自定义方法。由于它是基于自定义方法的 友好_id 当市场对象更新时,不会更新URL。 Friendly_ID确实提供了REDO_SLUGS RAKE任务,但是当我从控制器内调用它时,它告诉我它无法构建任务。在外部运行命令很好。
我的控制器的代码看起来像这样:
require 'rake'
require 'friendly_id'
class Admin::MarketsController < ApplicationController
def update
if @market.update_attributes(params[:market])
rake_market_slugs
end
end
protected
def rake_market_slugs
Rake::Task["friendly_id:redo_slugs MODEL=Market"].invoke
end
end
我想念什么吗?还是可以在控制器内部不这样做?
谢谢你。
解决方案
从控制器调用耙子任务以更新模型对象是可怕的。看着 该耙任务的代码, ,你可以看到 redo_slugs
只是运行 delete_slugs
和 make_slugs
任务。因此,还有另一个原因不这样做。您将为每个人生成sl Market
在您的桌子中,而不仅仅是您需要的。
如果你看 make_slugs的代码 您可以看到那里没有魔法。它所做的只是将模型对象加载到100个块中,然后保存它们。
因此,这将是我要尝试的第一件事。只需重新加载并保存模型。之后,我需要查看一些日志以深入挖掘。
其他提示
def rake_market_slugs
MODEL="Market"
Rake::Task["friendly_id:redo_slugs"].invoke(MODEL)
end
Try it...
不隶属于 StackOverflow