Призывные рейки :: Задача в причинах рельсов «Не знаю, как построить задачу ...»
-
05-10-2019 - |
Вопрос
Пытаюсь интегрировать некоторые функциональности GEM Friendly_id в методе контроллера.
По сути, у меня есть объект рынка, который имеет свой URL, созданный на основе пользовательского метода. Так как он основан на пользовательском методе, Friendly_id Не будет обновлять URL, когда объект рынка обновляется. Friendle_id предлагает задачу Redoo_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
задачи. Так что есть еще одна причина не делать этого. Вы будете генерировать слизни для каждого Market
В вашем столе вместо того, чтобы только тот, который вам нужен.
Если вы посмотрите на Код для make_slugs Вы можете увидеть, что там нет магии. Все это делает, загружает свои модели объектов в блоки 100, а затем сохранить их.
Итак, это было бы первым, что я бы попробую. Просто перезагрузите и сохраните свою модель. После этого мне нужно было бы увидеть некоторые журналы, чтобы копать глубже.
Другие советы
def rake_market_slugs
MODEL="Market"
Rake::Task["friendly_id:redo_slugs"].invoke(MODEL)
end
Try it...