What’s the difference between:
@current_role = current_user.try(:role) || :guest
and
@current_role = current_user.try(:role) || “guest”
What’s the difference between:
@current_role = current_user.try(:role) || :guest
and
@current_role = current_user.try(:role) || “guest”
On 25 Nov 2011 07:58, “Mauro” [email protected] wrote:
What’s the difference between:
@current_role = current_user.try(:role) || :guest
and
@current_role = current_user.try(:role) || “guest”
One sets @current_role as a string, the other as a symbol…
Are you asking “what’s the difference between strings and symbols?” - if
so, Google is your friend.
As an aside, it may be cleaner code to not store the value in a new
instance variable in your controller, but to have a method called
current_role on the User model that does the same calculation. It’ll end
up
DRYer this way.
(Actually, if it were me, i would probably put a default value if
‘guest’
in the db field for current_user.role and validate the potential values
to
a list …)
On 25 November 2011 09:33, Michael P. [email protected] wrote:
the db field for current_user.role and validate the potential values to a
list …)
Yes you’re right but my application is for different uses.
In admin use the user must be logged in, so he has a role assigned, etc.
etc.
In normal use the users do not to be logged in so there isn’t a user
class but I need some information to display a different layout if the
user is logged in and he is an admin or if I have no users logged.
Sorry for my bad english.
On 25 November 2011 09:11, Mauro [email protected] wrote:
Yes you’re right but my application is for different uses.
All applications are for different uses.
In admin use the user must be logged in, so he has a role assigned, etc. etc.
In normal use the users do not to be logged in so there isn’t a user
class but I need some information to display a different layout if the
user is logged in and he is an admin or if I have no users logged.
Then have your “current_user” method return an unsaved user object for
the not-logged-in-users - this will let you populate it with default
values:
def current_user
User.find_by_id(session[:user_id]) || User.new(:name => “not
logged in”, :role => “guest”, :etc => “etc”)
end
Then you have a “logged_in?” method that checks for “.new_record?” :
class User < AR:Base
# all your stuff up here…
def logged_in?
!self.new_record?
end
end
…so now you can check “current_user.logged_in?” in your controllers
and views to determine what content to show.
M
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs