# Am I doing it the right way?

**URL:** <https://www.ruby-forum.com/t/am-i-doing-it-the-right-way/150592>\
**Category:** Rails\
**Created:** [October 10, 2008, 8:49am UTC](https://www.ruby-forum.com/t/am-i-doing-it-the-right-way/150592 "2008-10-10T08:49:58Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![apswartz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/71e660/32.png) [@apswartz](https://www.ruby-forum.com/u/apswartz)\
**Post date:** [October 10, 2008, 8:49am UTC](https://www.ruby-forum.com/t/am-i-doing-it-the-right-way/150592/1 "2008-10-10T08:49:58Z")

</div>

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!

---

<div class="post-metadata">

**Author:** ![apswartz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/71e660/32.png) [@apswartz](https://www.ruby-forum.com/u/apswartz)\
**Post date:** [October 10, 2008, 8:53am UTC](https://www.ruby-forum.com/t/am-i-doing-it-the-right-way/150592/2 "2008-10-10T08:53:28Z")

</div>

On Oct 10, 3:56 am, Alan S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) 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

---

<div class="post-metadata">

**Author:** ![apswartz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/71e660/32.png) [@apswartz](https://www.ruby-forum.com/u/apswartz)\
**Post date:** [October 11, 2008, 1:42am UTC](https://www.ruby-forum.com/t/am-i-doing-it-the-right-way/150592/3 "2008-10-11T01:42:59Z")

</div>

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).

---

<div class="post-metadata">

**Author:** ![apswartz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/71e660/32.png) [@apswartz](https://www.ruby-forum.com/u/apswartz)\
**Post date:** [October 11, 2008, 4:42am UTC](https://www.ruby-forum.com/t/am-i-doing-it-the-right-way/150592/4 "2008-10-11T04:42:02Z")

</div>

Alan S. wrote:

> **Email:**  
> …  
> **Password:**  
> …  
> **Role:**

Would probably be better as:  
**Email:  
…  
 Password:  
…  
 Role:**

Long live CSS!

---

<div class="post-metadata">

**Author:** ![apswartz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/71e660/32.png) [@apswartz](https://www.ruby-forum.com/u/apswartz)\
**Post date:** [October 11, 2008, 1:42am UTC](https://www.ruby-forum.com/t/am-i-doing-it-the-right-way/150592/5 "2008-10-11T01:42:59Z")

</div>

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. \<  
removed\_email\_address@domain.invalid\> 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
