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 に答える