2011-04-07 2 views
0

이 초보자 만 쉽게 알 수는 있지만 어디서나 대답을 찾을 수는 없습니다. user 테이블에 role_id가있는 User 모델과 Role 모델이 있습니다. 내 사용자 인덱스 페이지에서 역할 테이블에있는 실제 역할 (관리자, 방문자 등)을 표시하려고합니다.
이 index.html.erb의 관련 섹션 : Easy Rails 질문 : 보조 테이블에 데이터 표시

<% @users.each do |user| %> 
    <tr> 
    <td><%= user.username %></td> 
    <td><%= user.email %></td> 
    <td><%= user.role_id %></td> 
    <td><%= link_to 'Show', user %></td> 
    <td><%= link_to 'Edit', edit_user_path(user) %></td> 
    <td><%= link_to 'Destroy', user, :confirm => 'Are you sure?', :method => :delete %></td> 
    </tr> 
<% end %> 

그래서 나는 user.role.id 대신에 무엇을 넣을까요

?

role.rb :

class Role < ActiveRecord::Base 
end 

user.rb :

class User < ActiveRecord::Base 
    has_one :role 
end 

내가 사용 레일 3, FWIW.

TIA

+0

은 has_one 또는 has_many 관계입니까? – apneadiving

+0

역할 모델의 속성은 무엇입니까? –

+0

편집 : 추가 된 역할 및 사용자 모델 코드 – davej

답변

2

귀하의 모델은 실제로 잘못 구성되어 있습니다,하지만 난이 질문을 이해할 수있는 것과 당신이 다음을 할 수 있습니다.

class User < ActiveRecord::Base 
    belongs_to :role 
end 

class Role < ActiveRecord::Base 
    has_many :users 
end 

그리고 다음과 같은 작업을 수행 할 수 있습니다

<%= user.role.name_field %> 

이 모든 여러 사용자 수는 같은 역할을한다. 일대일 관계를 시행하는 대신. 스키마 변경은 필요하지 않습니다.

+0

당신은 분명히 맞습니다 : +1. 나를 위해자는 시간 : – apneadiving

+0

빙고! 고맙다. – davej