【发布时间】:2010-09-21 20:31:46
【问题描述】:
在我为帮助我在(和)Rails 上学习 Ruby 而构建的 Rails 3 应用程序中,我对“roles/roles_users/users”表感到有些困惑。
我有 Devise 和 CanCan,我想“访问”这些角色。
现在,我有三个角色:
管理员
员工
客户
在数据库中,我有这些表(以及其他一些表):
角色(表格)
id => 1 ||名称 => 管理员
id => 2 ||姓名 => 员工
id => 3 ||名称 => 客户
roles_users(表)
角色 ID => 1 ||用户 ID => 1
角色 ID => 2 ||用户 ID => 2
角色 ID => 3 || user_id => 3
用户(表)
用户1
用户2
用户3
所以现在我有三个用户。用户 #1 是“管理员”,用户 #2 是“员工”,用户 #3 是“客户”。
在“views/admin/users/show.html.erb”中,我想显示每个用户的“角色”,然后还允许管理员更改它。一旦我能够显示角色,我想我可以设置它以便管理员可以更改它。
问题是......我有点困惑我可以使用哪个变量/名称来显示每个用户的角色。我可以轻松访问 user.first_name 或 user.address 之类的东西,但我不确定如何访问 user.role 之类的东西(这不起作用)。
有什么建议吗?
干杯!
山姆
【问题讨论】:
-
您可以为您在models/users.rb 和models/roles.rb 中定义的关系添加代码吗?
-
在 models/roles.rb 我有:has_and_belongs_to_many :users 在 models/users.rb 我有:has_and_belongs_to_many :roles
-
在rails控制台中,是否可以通过@user.roles访问用户的角色通过指定HABTM关系,你已经说过一个用户有很多角色,而不仅仅是1个。因此rails会生成@ user.roles,而不是 @user.role 作为我相信的助手。
-
是的,你是对的。对于这个应用,我实际上并不需要用户拥有多个角色,所以我可以改变它。
标签: ruby-on-rails ruby