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の代わりに何を配置しますか?

role.rb:

class Role < ActiveRecord::Base
end

user.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 %>

これにより、複数のユーザーがすべて同じ役割を持つことができます。1対1の関係を強制する代わりに。スキーマを変更する必要はありません。

于 2011-04-07T22:00:49.060 に答える