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