Rails Admin Devise - 如何编辑其他用户?

时间:2016-02-13 15:55:50

标签: ruby-on-rails ruby ruby-on-rails-3 devise

我在设计用户上创建了一个布尔值来确定管理员。现在我有了这个,我有一个用户列表。我也想让其他用户管理员,所以我输入了编辑链接,但他们只是保持链接到我自己的个人资料。我是否必须使用像CanCan这样的宝石,或者我是否可以通过用户的布尔值来实现这一点?

admin_view.html.erb

 <div>
  <h1>Admin View</h1>
   <table>
    <thead>
     <tr>
      <th>First Name</th>
      <th>Last Name</th>
      <th>Native Language</th>
      <th>Learning Language</th>
      <th>Admin?</th>
      <th colspan="3"></th>
     </tr>
   </thead>

   <tbody>
    <% @users.each do |user| %>
     <tr>
      <td><%= user.first_name %></td>
      <td><%= user.last_name %></td>
      <td><%#= user.meeting_time %></td>
      <td><%= user.admin %></td>
      <td><%=  %></td>
      <td><%=  %></td>
      <td><%= link_to 'Edit', edit_user_path(user) %></td>
     <% end %>
    </tr>
   </tbody>
  </table>

编辑视图

 <h2>Edit <%= resource_name.to_s.humanize %></h2>

  <%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %>
  <%= devise_error_messages! %>

  <div class="field">
    <%= f.label :first_name %>
    <%= f.text_field :first_name, autofocus: true %>
  </div>
  <div class="field">
     <%= f.label :current_password %> <i>(we need your current password to confirm your changes)</i><br />
     <%= f.password_field :current_password, autocomplete: "off" %>
  </div>
  <div class="form-group">
   <%= f.label :admin %>
   <%= f.check_box :admin %>
  </div>
  <div class="actions">
   <%= f.submit "Update" %>
  </div>
<% end %>

对于rails来说还是非常新的,所以如果我需要发布任何其他信息,请告诉我。谢谢!

更新

profiler_controller.rb

  def admin_view
    @users = User.all
  end

1 个答案:

答案 0 :(得分:0)

这是class feed(object): def __init__ (self, food = 0, water = 0) : self.food = food self.water = water def fill(self): self.food += 1 self.water += 1 的情况(用户是否有权限)。

正如您所说,您可以使用CanCanCanauthorization不再维护)来执行此操作,但有许多类似的宝石,例如Pundit等。

如果使用CanCan,我会使用以下内容:

CanCanCan

这将允许您使用:

#config/routes.rb
resources :users do
  post :admin #-> url.com/users/:user_id/admin
end

#app/models/ability.rb
class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new # guest user (not logged in)
    if user.admin?
      can :manage, :user
    end
  end
end

如果需要,我可以提供更多;这应该回答你的问题。