Am I doing it the right way?

Hello, I’m totally new to RoR but I work with PHP and Java for a
while (7 years)… I’m getting used to Ruby and I’d like to know if
the code below is “right”. It is the “show” page of the Users table…

Email: <%=h @user.email %>

Password: <%=h @user.password %>

Role: <%=h Role.find(@user.role_id).name %> ==========> This line, is it right? Is there a better way to do it?

<%= link_to ‘Edit’, edit_user_path(@user) %> |
<%= link_to ‘Back’, users_path %>

Thank you!

On Oct 10, 3:56 am, Alan S. [email protected] wrote:

Role: <%=h Role.find(@user.role_id).name %> ==========> This line, is it right? Is there a better way to do it?

typically you would have an association between users and roles so
that you could do user.role

Fred

As @Fredrick said, you can do something like
in user.rb
has_many :roles (or has_one :role)
and in role.rb
belongs_to :user

so in your controller you’d call user.role.name (or
user.roles.first.name if you have many roles and want to get the
first).

Alan S. wrote:

Email:

Password:

Role:

Would probably be better as:
Email:

Password:

Role:

Long live CSS!

As @Fredrick said, you can do something like
in user.rb
has_many :roles (or has_one :role)
and in role.rb
belongs_to :user

so in your controller you’d call user.role.name (or
user.roles.first.name if
you have many roles and want to get the first).

From what you have I worry if Role.find returns a null object so you’d
get
an exception unless you have validations when you create your objects to
make sure every user has a role. To solve this you can add a “unless”
statement: <%=h Role.find(@user.role_id).name unless
Role.find(@user.role_id).nil? %> which means that it won’t try to get
the
name if it returned a nil so you’d avoid the problem.

On Fri, Oct 10, 2008 at 2:52 AM, Frederick C. <
[email protected]> wrote:

typically you would have an association between users and roles so
that you could do user.role

Fred


Youssef Chaker

Software Developer
Open Source Connections

University Of Virginia
Computer Engineering
Class of 2008