Reputation: 5250
I am using devise with rails. I have generated User model in devise and I didn't have user controller and home controller . My root page is devise/sessions#new
.
My root path
devise_scope :user do
root :to => "users/sessions#new"
end
devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks", :registrations => "users/registrations" }
when I run localhost:3000 I am getting the following error.
Filter chain halted as :require_no_authentication rendered or redirected.
Started GET "/" for 127.0.0.1 at 2014-02-19 10:07:46 +0530
Processing by Devise::SessionsController#new as HTML
User Load (0.2ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 ORDER BY `users`.`id` ASC LIMIT 1
Redirected to http://localhost:3000/
Filter chain halted as :require_no_authentication rendered or redirected
Completed 302 Found in 3ms (ActiveRecord: 0.2ms)
The solution I found on internet is that add this in sessions controller prepend_before_filter :require_no_authentication, :only => [ :new, :create, :cancel ]
. My doubt is how can I access sessions controller. It is not generated in controller it is inbuilt module or is there any other way to solve this.
app/controller/users/session_controller.rb
class Users::SessionsController < Devise::SessionsController
prepend_before_filter :require_no_authentication, :only => [ :new, :create, :cancel ]
end
Upvotes: 2
Views: 10384
Reputation: 10288
You can override session controller like this:
route.rb
devise_scope :user do
root to: "users/sessions#new"
end
app/controller/users/sessions_controller.rb
class Users::SessionsController < Devise::SessionsController
prepend_before_filter :require_no_authentication, :only => [ :new, :create, :cancel ]
end
Upvotes: 3