2012-06-09 4 views
3

Я установил драгоценный камень friendly_id, следуя за ним до RailsCasts Screencast. Локально это работает блестяще, я его установил, прошел через User.find_each(&:save), который успешно обновил поле слива у каждого из существующих пользователей, и все было в порядке.Rails Friendly_Id на Heroku, Heroku не обновляет пули

Теперь я переместил это в Heroku, и хотя он отлично подходит для новых добавленных членов, Heroku не обновляет пользовательский slug для меня уже существующих пользователей.

heroku run console Запуск, а затем User.find_each(&:save) просто ничего не делает:

irb(main):001:0> User.find_each(&:save) 
    User Load (20.2ms) SELECT "users".* FROM "users" WHERE ("users"."id" >= 0) ORDER BY "users"."id" ASC LIMIT 1000 
    (23.6ms) BEGIN 
    (2.0ms) COMMIT 
    (13.6ms) BEGIN 
    (21.1ms) COMMIT 
=> nil 

Соответствующий код в models/user.rb является:

extend FriendlyId 
friendly_id :name, use: :slugged 
def should_generate_new_friendly_id? 
    new_record? 
end 

И я бежал все DB миграции на Heroku, и они пошли хорошо. Я проверил, и таблица users имеет поле slug, но оно пустое, и я не уверен, где я здесь ошибся. Если кто-то сталкивался с этим раньше, любой совет был бы очень оценен. Спасибо.

ответ

7

И, конечно же, это всегда что-то глупое. Я действительно не знаю, как я пропустил это:

Этот фрагмент кода:

def should_generate_new_friendly_id? 
    new_record? 
end 

Что есть, чтобы остановить новые пули быть сделано, если имя изменено, также остановить его обновления предыдущих постов.

Я решил проблему, комментируя это, толкание, запустив консоль Heroku & затем User.find_each(&:save) работал нормально, я тогда не-комментировал код & снова толкнул на Heroku, и все денди.

Надеюсь, это может помочь кому-то в будущем!

+0

это помогло. Благодаря ! – MrWater

0

В моем случае это была история:

friendly_id :text, use: [:slugged, :history] 

бы быть

friendly_id :text, use: :slugged 

Чтобы сделать Heroku сохранить работу ... Я тогда readded истории части

0

я смог чтобы исправить эту проблему, изменив мой метод should_generate_new_friendly_id? от

def should_generate_new_friendly_id? 
    title_changed? 
    end 

в

def should_generate_new_friendly_id? 
    slug.nil? || title_changed? 
    end 
Смежные вопросы