I know that with the following code:
before_action :signed_in?, only: [:new]
the action new
will be executed if the signed_in?
returns true, but instead if I want the new
action to be executed when signed_in?
returns false what do I have to do? Do I have to create a new method called, for instance, not_signed_in?
?
Here it is my signed_in?
method
def signed_in?
!@current_user.nil?
end
before_action doesn't work as you think - it doesn't prevent action to be executed if callback returns
false
. I would solve your problem in a little bit different manner, for example:alltough i think its better to redirect in the action which was called.
If you want to cover all other methods with
before_action :signed_in?
except new action, you'b better to use
:except
instead of:only
like this:
before_action :signed_in?, except: :new