Easy Rails问题re:在辅助表中显示数据

时间:2011-04-07 21:23:25

标签: ruby-on-rails multiple-tables

对于除了这个新手之外的任何人都很容易,我敢肯定,但我无法在任何地方找到答案。我有一个用户模型和一个角色模型,在users表中有role_id;我想在我的用户索引页面上显示驻留在角色表中的实际角色(管理员,访客等) 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

我正在使用Rails 3,fwiw。

TIA

1 个答案:

答案 0 :(得分:2)

您的模型确实配置不正确,但我可以理解您想要的以下问题。

class User < ActiveRecord::Base
  belongs_to :role
end

class Role < ActiveRecord::Base
  has_many :users
end

然后您可以执行以下操作:

<%= user.role.name_field %>

这将允许多个用户拥有相同的角色。而不是强制执行一对一的关系。不需要更改架构。