我有一个简单的应用程序(Rails 3.2),其用户模式设置为devise(版本2.0.4)。
我的用户模型具有设计默认设置:
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable, :confirmable,
:recoverable, :rememberable, :trackable, :validatable
# Setup accessible (or protected) attributes for your model
attr_accessible :first_name, :last_name, :email, :password, :password_confirmation, :remember_me
end
当我使用默认的设计路线时,一切似乎都能正常工作:
devise_for :users
但是我没有使用默认值,所以我把它改成了这个:
devise_for :users, :path => '', :path_names => { :sign_in => "login", :sign_out => "logout", :sign_up => "sign_up" }
在我改变了这条路线并重新启动我的服务器后,它们似乎工作正常但由于某种原因验证现在不起作用,即使我从我的模型中删除“validatable”功能并添加我自己的自定义验证,似乎没有那么好。
非常乐意为您提供帮助! - 帕兹
答案 0 :(得分:1)
解决了这个问题。它不起作用的原因是因为设计使用“用户/登录”来了解要处理的范围。
所以为了解决这个问题,我将路由文件改为:
devise_for :users
devise_scope :user do
get "/login" => "devise/sessions#new"
get "/logout" => "devise/sessions#destroy"
get "/register" => "devise/registrations#new"
end
参考: https://github.com/plataformatec/devise/wiki/How-To:-Change-the-default-sign_in-and-sign_out-routes