2015-01-22 4 views
3

Я что-то не так? on Record update, slug не обновляется.Friendly_id change slug on Record Update

class Company < ActiveRecord::Base 
extend FriendlyId 

friendly_id :name, use: [:slugged, :finders] 

def should_generate_new_friendly_id? 
    true 
end 

Я использую:

friendly_id (5.0.4) 
Rails 4.1.7 
ruby 2.1.3p242 (2014-09-19 revision 47630) 

Это, как я пытаюсь в терминале:

c = Company.last 
    c.slug = nil 
    c.name = "testing abb" 
    c.save 
    c.reload 
    c.slug // nil 
    c.name // testing abb 

в момент создания: он вставляет слизняк, но оленья кожа обновления на рекордное обновление. Есть идеи ?

+0

эй, у вас что-то получилось? потому что я вижу, что вы не приняли мой ответ и не отправили свое решение. –

ответ

4

Добавить :history в friendly_id :name, use: %i(slugged finders):

friendly_id :name, use: %i(slugged history finders) 

и переопределить should_generate_new_friendly_id метод для удовлетворения ваших потребностей:

def should_generate_new_friendly_id? #will change the slug if the name changed 
    name_changed? 
    end 
+0

Я уже переопределяю 'should_generate_new_friendly_id? ', как я упоминал выше в коде. но я понял. проблема в том, что файл Model.rb слишком велик, и я не заметил, что 'should_generate_new_friendly_id?' уже определен в конце файла каким-то другим разработчиком :) – Kashif

+0

Нет такой вещи, как 'model.rb' 'didnt заметьте "что-то .. Ваш метод не работает, потому что вы не говорите ему, какие изменения в треке, а просто возвратите' true'. Следуйте инструкциям, которые я предоставил, и он будет работать –

+0

Спасибо, Андрей ... – Kashif

Смежные вопросы