Why are some methods of library accessible, while others are not? (by the example of restful_authen

If you have a model ‘user’ generated through restful_authentication
generator, then you should have an accessor

def current_user
@current_user ||= …
end

inside the file authenticated_system.rb in lib folder. If you did as
it is recommended and put ‘include AuthenticatedSystem’ in
ApplicationController, then now you have an access to the method
‘current_user’ in any view. The same for method ‘logged_in?’.

Now try doing the same for method ‘login_required’, which is also
inside of AuthenticatedSystem module. Doesn’t work. Reads “undefined
local variable or method ‘login_required’”.

Summing up, both ‘logged_in?’ and ‘login_required’ are inside of
Authenticated System module. ‘logged_in?’ is accessible from any view,
while ‘login_required’ is not.

What’s the difference?
Thanx

Oleg :

‘current_user’ in any view. The same for method ‘logged_in?’.

Now try doing the same for method ‘login_required’, which is also
inside of AuthenticatedSystem module. Doesn’t work. Reads “undefined
local variable or method ‘login_required’”.

Summing up, both ‘logged_in?’ and ‘login_required’ are inside of
Authenticated System module. ‘logged_in?’ is accessible from any view,
while ‘login_required’ is not.

What’s the difference?

#current_user and #logged_in? are available as helpers in your
views because of these lines :

def self.included(base)
base.send :helper_method, :current_user, :logged_in?
end

The ‘included’ callback (called when you do “include
AuthenticatedSystem”)
is responsible of this, thanks to ActionController::Base.helper_method
method.

– Jean-François.

Thank you, Jean-François.

Actually, I checked application_helper.rb before I posted here. But
having found blank, I was very surprised. Didn’t know that helpers
could be created the way you showed.

Thanks again,
Happy 2008 to you and all the community,
truetype

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs