0

我敢肯定,除了这个新手以外的任何人都很容易,但我在任何地方都找不到答案。我有一个 User 模型和一个 Role 模型,在 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 呢?

角色.rb:

class Role < ActiveRecord::Base
end

用户.rb:

class User < ActiveRecord::Base
    has_one :role
end

我正在使用 Rails 3,fwiw。

TIA

4

1 回答 1

2

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

class User < ActiveRecord::Base
  belongs_to :role
end

class Role < ActiveRecord::Base
  has_many :users
end

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

<%= user.role.name_field %>

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

于 2011-04-07T22:00:49.060 回答