1

我有一个简单的应用程序(Rails 3.2),它带有一个使用设计(版本 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" }

在我更改此路由并重新启动服务器后,它们似乎工作正常,但由于某种原因,验证现在不起作用,即使我从模型中删除“可验证”功能并添加我自己的自定义验证,它们似乎也没有也可以工作。

很想得到你的帮助!- 帕兹

4

1 回答 1

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

于 2012-05-28T23:30:40.493 回答