我正在尝试在Rails 4中创建一个应用程序。我使用设计进行身份验证,并使用专家进行授权。我想将Rolify用于角色权限。
我发布了这个问题,得到了一些非常有用的初学建议。Defining Roles with Rolify
我制作了一个控制器和视图,因为我希望角色由其他用户分配并受制于标准(例如任期),例如:学生将在学期结束前一直担任学生角色。 / p>
我还希望能够在应用扩展时添加新角色。
我使用seeds.rb来创建初始角色。我还没有将角色的使用限制在管理员身上 - 但是一旦我完成这项设置和工作,我将制定一项权威政策。
我在HABTM关系方面没有多少经验,并且在试图了解它们的工作方式时遇到困难。
我想为我的角色制作一个展示页面 - 显示已分配角色的每个用户。
我有:
<div class="formheader"><td><%= @role.name %></td></div>
<div class="row">
<div class="table-responsive" style="margin-left:30px; margin-top:15px">
<table class="table table-bordered">
<tr>
<td><span class="intpolth">User</span></td>
<td><span class="intpolth">Commenced</span></td>
<td><span class="intpolth">Terminated</span></td>
</tr>
<% @roles.user.each do |role| %>
<tr>
<td><%= user.formal_name %></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<% end %>
此时,我认为我的错误可能更多地与如何表达HABTM联接有关,而不是如何使用Rolify - 但任何人都可以看到我做错了什么?此表的目的是列出已分配相关角色的每个用户名。
我在尝试此操作时收到此错误消息:
undefined method `user' for nil:NilClass
我注意到我的rolify迁移创建了一个名为&#39; users_roles&#39;的连接表。我理解约定是表名按字母顺序排列,第一个表名是单数而不是复数。这可能与我的问题有关吗?
此时我所拥有的只是我的用户模型中的一个方法:
after_create :add_default_role
def add_default_role
add_role(:guest) if self.roles.blank?
end
我在我的seeds.rb中扮演了角色,其中包括:guest。
我的控制台显示我有这个角色:
Role Load (4.2ms) SELECT "roles".* FROM "roles" WHERE "roles"."name" = $1 [["name", "guest"]]
=> #<ActiveRecord::Relation [#<Role id: 23, name: "guest", resource_id: nil, resource_type: nil, created_at: "2016-01-16 09:46:16", updated_at: "2016-01-16 09:46:16">]>
我刚刚开始并努力了解其工作原理。
我应该说,这个宝石的生成器确实是一个榜样,但它没有任何内容。我是否需要在角色模型中添加任何内容才能使其正常工作?
class Role < ActiveRecord::Base
end
答案 0 :(得分:0)
而不是<%= user.formal_name %>
,
尝试<%= role.formal_name %>