0

据我了解,如果我让我的用户模型中的管理员布尔值列在 attr_accessible 中,则会产生安全漏洞。但是,我希望在我的显示页面上有一个链接,让现有的管理员用户向其他用户授予管理员权限。我想知道如何去做这件事?我目前在我的用户显示视图中的代码包括:

  <% if current_user.admin? && @user.admin == false %>
    <%= link_to "Make Administrator", '#', 
    data: { confirm: "Make this user an admin?" }, class: "btn btn-large btn-primary" %>
  <% elsif current_user.admin? && @user.admin%>
    <%= link_to "Remove Administrator", '#', class: "btn btn-large btn-danger" %>
  <% end %>

我不完全确定放什么而不是'#'?@user.toggle!(:admin) 似乎不起作用,因此任何指针都将不胜感激。先感谢您!

4

1 回答 1

2

首先,因为这是一个动作,所以它应该是一个按钮,而不是一个链接。

<%= button_to user_path(@user), :method => :put ... %>

控制器代码

def update
 if params[:admin] 
   user.update_attribute(:admin, true)
   redirect_to ...
 end
...
end

或者如果您更愿意将逻辑保留在模型中

def update
 ...
 if params[:admin]
  @user.make_admin
 end
 ...
end

型号代码

def make_admin
 self.update_column(:admin, true)
end
于 2012-07-21T18:47:46.610 回答