Easy Rails 问题:在辅助表中显示数据
我敢肯定,除了这个新手之外,对任何人来说都很容易,但我在任何地方都找不到答案。我有一个用户模型和一个角色模型,用户表中有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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的模型确实配置不正确,但根据我对问题的理解,您想要以下内容。
然后您可以执行以下操作:
这将允许多个用户都具有相同的角色。而不是强制建立一对一的关系。无需更改架构。
Your models are indeed configured incorrectly, but from what I can understand of the question you want the following.
And then you can do the following:
This will allow multiple Users to all have the same role. Instead of enforcing a one to one relationship. No schema change is needed.