最近我安装了 gem 'devise', '1.5.2' 并尝试将用户重定向到注册页面/注册页面如果用户不存在 . 我通过多次更改路由以及使用if / else语句修改devise / sessions_controller中的代码来尝试,如果用户身份验证失败然后重定向到注册,但我想我错过了一些重要但简单的东西 . 我正在寻找一些东西

1. user logins
1.1. if user.authenticate! is true then show him the root_path(dashboard/index) ELSE redirect to register/signup page

i have trying this by making many changes in devise/sessions_controller and also by creating new failure.rb so that i can redirect but everything failed and again i am landing to same page with the expected flash message..pls help me out

routes.rb

as :user, do
    get '/users/sign_in' => 'devise/sessions#new'
    post '/users/sign_in' => 'devise/sessions#create'

    get '/users/change_password'    => 'devise/registrations#change_password'
    post 'users/update_password' =>  'devise/registrations#update_password'
    post '/users/password'  => 'devise/passwords#create'

    get '/users/password/edit'  => 'devise/passwords#edit'
    put '/users/password'  => 'devise/passwords#update'

  end
  devise_for :users, :controllers => { :"devise/omniauth_callbacks" => "devise/omniauth_callbacks", :confirmations => "devise/confirmations", :'users/sessions' => "sessions", :'devise/passwords' => "devise/passwords" ,
    :'devise/registrations' => "users/registrations"}

app/views/devise/sessions/new.html.erb

<%= form_for(resource_name, :url => users_sign_in_path) do |f| %>
  <div><%= f.label :email %>
<%= f.email_field :email %></div> <div><%= f.label :password %>
<%= f.password_field :password %></div> <% if devise_mapping.rememberable? -%> <div><%= f.check_box :remember_me %> <%= f.label :remember_me %></div> <% end -%> <div><%= f.submit "Sign in" %></div> <% end %>

app/controllers/devise/sessions_controller.rb

class SessionsController < Devise::SessionsController

  prepend_before_filter :require_no_authentication, :only => [ :new, :create ]
  prepend_before_filter :allow_params_authentication!, :only => :create
  include Devise::Controllers::InternalHelpers
  layout :false

def new
  p 'in new sessions controller------------------'
  resource = build_resource
    clean_up_passwords(resource)
    respond_with_navigational(resource, stub_options(resource)){ render_with_scope :new }

end


def create
  p "sessions create in sessions controller------
 ##tried to make many changes here using if else,but no result yet
  p params
  self.resource = warden.authenticate!(auth_options)
    set_flash_message(:notice, :signed_in) if is_navigational_format?
    sign_in(resource_name, resource)
    if !session[:return_to].blank?
      redirect_to session[:return_to]
      session[:return_to] = nil
    else
      respond_with resource, :location => after_sign_in_path_for(resource)
    end
  end
end

in devise.rb

config.authentication_keys = [ :email ]