Rails 3 + Devise:自定义路由问题

时间:2013-01-06 12:45:42

标签: ruby-on-rails-3 login devise rails-routing

我已按照设计wiki将登录路由从/users/sign_in切换为/login。我的路线文件如下所示:

devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }

devise_scope :user do
  get '/login'    , :to => 'devise/sessions#new'    , :as => :login
  delete '/logout', :to => 'devise/sessions#destroy', :as => :logout
end

我的用户模型有这个

class User < ActiveRecord::Base
  devise :omniauthable, :database_authenticatable
end

我有一个常见的情况,即用户已注销,尝试访问受限制的页面,然后重定向以自行登录。

但是,当该用户被重定向时,设计会将其发送到/users/sign_in路径而不是/login

我可以将重定向到/login网址的唯一方法是将其添加到routes.rb的顶部:

match "/users/sign_in" => redirect('/login')

它为我的应用程序添加了一个重定向,这反过来会混淆测试 - 每当我做这样的事情时:

current_url.should == login_path

我收到错误消息,说预期路径为“/ login”,实际为“/ users / sign_in”。

我在这里想念一下 - 有什么优雅的解决方法吗?感谢。

旁注

我只使用:omniauthable进行身份验证,但我添加:database_authenticatable来设计配置以强制它转到专用登录页面。

否则,设计总是指向根路径,所以看起来如此。如果您知道更好的方法,请 - 请加入。

0 个答案:

没有答案