2011-05-07 21 views
5

hata kodu kullanarak hata saptadım Kullanıcı adı profilinde oturum açma adına izin vermek için kullanıcı dostu bir kimlik kullandım, ancak arkadaşlık kimliği tarafından rezerve edilen kullanıcı adıyla kaydolmaya çalıştığımda bir hata aldım. Görünüşe göre, hata mesajını düzgün bir şekilde oluşturamıyor. Hata authlogic kullanırken sadece iyi çalışıyor.Kullanıcı dostu 0 ve

Friendly_id Yapılandırma:

:reserved_words => ["index", "new", "users", "admin", "login", "logout", "books", 
        "administrator", "signup"], 

Hata:

FriendlyId::ReservedError in Devise::RegistrationsController#create 
FriendlyId::ReservedError 

kullanıyorum:

gem 'devise', '1.3.4' 
gem 'friendly_id', '3.2.1.1' 

cevap

0

bu discussion geçiyor sonra ben user.rb aşağıdaki eklendi ve onu iyi çalışıyor gibi görünüyor:

Ayrıca, normal doğrulamada zaten kontrol ettiğim için FriendlyId :: BlankError'u kurtaracak bir koşul ekledim.

2

3.1.1

extend FriendlyId 
friendly_id :name 

after_validation :validate_reserved 

def validate_reserved 
    if @errors[:friendly_id].present? 
    @errors[:name] = "is reserved. Please choose something else" 
    @errors.messages.delete(:friendly_id) 
    end 
end 

Benim friendly_id.rb başlatıcısı şöyle Ruby on friendly_id 4.0.0.beta14 ile aşağıdaki işleri:

FriendlyId.defaults do |config| 
    config.use :slugged, :reserved 
    config.reserved_words = %w(new edit index show data) 
end 
+0

Bu, tek bir liner - 'errors.add: name, * errors.delete (: friendly_id) kısaltılmış olabilir hatalar [: friendly_id] .present?' Olarak belgelendirilmiş [burada] (http://rubydoc.info)/github/norman/friendly_id/master/FriendlyId/Ayrılmış) –

+0

Bu değerleri incelemek, bunları hata dizisine ekleyecektir. Onlar mevcut olup olmadığını kontrol etmeden önce 'if [email protected]? && @errors [: friendly_id] .present? ' – heavysixer

0

Ayrıca yapılandırma/yerel ayarları değiştirebilir /en.yml veya uygun dil dosyası:

en: 
    activerecord: 
    errors: 
     models: 
     your_model_name: 
      attributes: 
      friendly_id: 
       exclusion: 'name is a reserved word' 

O Validation failed: Friendly name is a reserved word gibi okur.

İlgili konular