Призывные рейки :: Задача в причинах рельсов «Не знаю, как построить задачу ...»

StackOverflow https://stackoverflow.com/questions/3790404

Вопрос

Пытаюсь интегрировать некоторые функциональности 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...
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top