我使用友好Id允许用户使用他们的登录名访问配置文件,但当我尝试使用友好id保留的登录名进行注册时,我得到了一个错误。devise似乎不能正确地呈现错误消息。当我使用authlogic时,这个错误工作得很好。
Friendly_id配置:
:reserved_words => ["index", "new", "users", "admin", "login", "logout", "books",
"administrator", "signup"],错误:
FriendlyId::ReservedError in Devise::RegistrationsController#create
FriendlyId::ReservedError我使用的是:
gem 'devise', '1.3.4'
gem 'friendly_id', '3.2.1.1'发布于 2011-11-12 04:41:16
以下代码适用于Rails 3.1.1上的friendly_id 4.0.0.beta14
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我的friendly_id.rb初始化器如下所示:
FriendlyId.defaults do |config|
config.use :slugged, :reserved
config.reserved_words = %w(new edit index show data)
end发布于 2019-07-16 23:20:08
或者只需编辑config/initilaizers/friendly_id.rb文件并将保留字添加到
config.reserved_words = %w( [...] )发布于 2011-05-27 16:32:41
在通过这个discussion之后,我在user.rb中添加了以下内容,它似乎工作得很好:
after_validation :validate_reserved
def validate_reserved
slug_text
rescue FriendlyId::BlankError
rescue FriendlyId::ReservedError
@errors[friendly_id_config.method] = "is reserved. Please choose something else"
return false
end我还添加了一个条件,它将拯救FriendlyId::BlankError,因为我已经在我的常规验证中检查了它。
https://stackoverflow.com/questions/5923199
复制相似问题