Rails 4 - 设置Rolify与设计和权威 - 关系

时间:2016-01-19 06:23:08

标签: ruby-on-rails has-and-belongs-to-many rolify

我正在尝试在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

1 个答案:

答案 0 :(得分:0)

而不是<%= user.formal_name %>

尝试<%= role.formal_name %>