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

发布于 2024-10-31 11:58:39 字数 904 浏览 5 评论 0原文

我敢肯定,除了这个新手之外,对任何人来说都很容易,但我在任何地方都找不到答案。我有一个用户模型和一个角色模型,用户表中有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

Easy for anyone but this newbie, I'm sure, but I can't find the answer anywhere. I have a User model and a Role model, with role_id in the users table; I want to show the actual role (Admin, Visitor, etc) which resides in the roles table, on my users index page.
The pertinent section of the 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 %>

So what do I put in place of user.role.id?

role.rb:

class Role < ActiveRecord::Base
end

user.rb:

class User < ActiveRecord::Base
    has_one :role
end

I'm using Rails 3, fwiw.

TIA

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

攒一口袋星星 2024-11-07 11:58:39

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

class User < ActiveRecord::Base
  belongs_to :role
end

class Role < ActiveRecord::Base
  has_many :users
end

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

<%= user.role.name_field %>

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

Your models are indeed configured incorrectly, but from what I can understand of the question you want the following.

class User < ActiveRecord::Base
  belongs_to :role
end

class Role < ActiveRecord::Base
  has_many :users
end

And then you can do the following:

<%= user.role.name_field %>

This will allow multiple Users to all have the same role. Instead of enforcing a one to one relationship. No schema change is needed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文