Вопрос Easy Rails: отображение данных во вторичной таблице - PullRequest
0 голосов
/ 08 апреля 2011

Легко для всех, кроме этого новичка, я уверен, но я нигде не могу найти ответ.У меня есть модель User и модель Role, с role_id в таблице users;Я хочу показать фактическую роль (Администратор, Посетитель и т. Д.), Которая находится в таблице ролей, на моей странице индекса пользователей.
Соответствующий раздел index.html.erb:

<% @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, след.

TIA

1 Ответ

2 голосов
/ 08 апреля 2011

Ваши модели действительно настроены неправильно, но из того, что я могу понять по вопросу, вам нужно следующее.

class User < ActiveRecord::Base
  belongs_to :role
end

class Role < ActiveRecord::Base
  has_many :users
end

И тогда вы можете сделать следующее:

<%= user.role.name_field %>

Это позволит нескольким пользователям иметь одинаковую роль.Вместо того, чтобы навязывать отношения один к одному.Изменение схемы не требуется.

...