2016-04-13 30 views
0

Veritabanında yinelenen bir değer varsa, değeri kısaltmak için friendly_id başlatıcısı var. ŞimdiRails Friendly_id hatası Ne zaman Boş Alan

extend FriendlyId 
friendly_id :name, use: :slugged 

şöyle

# over writing the conflict slug 
module FriendlyId 
    module Slugged 
    def resolve_friendly_id_conflict(candidates) 
     candidates.first + friendly_id_config.sequence_separator + SecureRandom.hex(3) 
    end 
    end 
end 

Am i aşağıdaki hatayı

NoMethodError at /members 

undefined method `+' for nil:NilClass 


Company#resolve_friendly_id_conflict 
config/initializers/friendly_id.rb, line 5 
+0

ad boşsa varsayılan dizgiyi ayarlamadan ne haber? – margo

cevap

1

yöntem size alıyorum name boş bırakın ve doğrulama test eğer Firma Modeli Bu kullanarak değişti, aday olmasaydı, ancak yönteminiz işe yaramadı.

orijinal kodu Bkz

...

[candidates.first, SecureRandom.uuid].compact.... 

kompakt nil değerini düşeceği.

Bu adayı işlemek için ilk adayı bir dizeye dönüştürmenizi öneririm.

Daha da iyisi, orijinal deseni yapıştırabilirsiniz ... sadece rastgele alanı kendi başınıza değiştirebilirsiniz.

def resolve_friendly_id_conflict(candidates) 
    [candidates.first, SecureRandom.hex(3)].compact.join(friendly_id_config.sequence_separator) 
end 
+0

Çok teşekkürler @steve –