根据我的理解,如果我要让我的用户模型中的管理员布尔值列在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)似乎没有用,所以任何指针都会受到赞赏。提前谢谢!
答案 0 :(得分: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