I get an error NameError (undefined local variable or method \"current_user\" for #
when I try to use current_user in a
Building on ksol's post, you can ensure user.is_test by passing a block to authenticated:
authenticated :user, lambda {|u| u.is_test } do
// route stuff here
end
This is assuming that u.is_test returns a Boolean value.
current_user
is only available in your controllers and views. There is more than one way to achieve what you want, the easier being supplying it as a parameter to your method.
EDIT
if current_user
if accessible in the router, you can pass it to your constraints class by doing constraints: APIRouter.new(current_user)
. Then you need to define APIRouter#initialize
and store the current_user in an instance var that you can use in matches?
.
EDIT 2
I just remembered devise allows you to do this in your router :
authenticated :user do
root :to => "main#dashboard"
end
I don't know how to ensure that user.is_test
though.
EDIT 3
Last attempt. request.env["warden"].user(:user)
should give you a user if one is authenticated.
Just remember to add diff :as for both root otherwise it will through error
authenticated :user do
root :to => "main#dashboard", :as => :foo
end
root :to => "main#landing_page"