更改默认注册路由后,Devise不会验证注册表单

时间:2012-05-28 23:12:54

标签: ruby-on-rails-3 devise

我有一个简单的应用程序(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”功能并添加我自己的自定义验证,似乎没有那么好。

非常乐意为您提供帮助! - 帕兹

1 个答案:

答案 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