- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我想让管理员用户编辑其他用户。我怎样才能做到这一点?
有一个 User 模型,其字符串属性名为 role
,可以是 3 个东西:“admin”、“developer”、“client”。我希望管理员可以更改开发人员和客户的
信息。管理员无法看到彼此,所以这不会成为问题。
用户.rb
class User < ActiveRecord::Base
attr_accessible :email, :name, :password, :password_confirmation, :role, :company_id, :boss_id, :company
belongs_to :company
validates_inclusion_of :role, :in => ["admin", "developer", "client"], presence: true
end
index.html.erb
<table class="pretty" border="1" cellpadding="10">
<tr>
<th></th>
<th><%= sortable "name" %></th>
<th><%= sortable "email" %></th>
<th><%= sortable("name", "Company") %></th>
<th></th>
<th></th>
</tr>
<% for user in @users %>
<tr class="<%= cycle('oddrow', 'evenrow') -%>">
<td><%= gravatar_for user %></td>
<td><%= link_to user.name, user %></td>
<td><%= user.email %></td>
<td><%= user.company.name unless user.company_id.blank? %></td>
<td><% if (current_user.role == "admin") || ( ( (current_user.role == "developer") && !current_user?(user) ) && (user.boss_id == current_user.id) ) %>
<%= link_to "delete", user, method: :delete,
data: { confirm: "You sure?" } %>
<% end %></td>
<td><% if (current_user.role == "admin") %>
<%= link_to "reset password", user, method: :update %> ###this is where admin will edit another user
<% end %></td>
</tr>
<% end %>
</table>
使用这段代码,当我点击reset password
时,它说:
路由错误
没有路由匹配 [POST] "/users/1"
编辑: config/routes.rb
SampleApp::Application.routes.draw do
#get "confs/new"
resources :users
resources :sessions, only: [:new, :create, :destroy]
resources :companies
root to: 'sessions#new'
match '/home' , to: 'static_pages#home'
match '/help' , to: 'static_pages#help'
match '/about' , to: 'static_pages#about'
match '/contact' , to: 'static_pages#contact'
match '/buttons' , to: 'static_pages#buttons'
match '/signup' , to: 'users#newuser'
match '/signin' , to: 'sessions#new'
match '/signout', to: 'sessions#destroy' , via: :delete
match '/developers', to: 'users#developers'
match '/clients', to: 'users#clients'
match '/downloads', to: 'confs#downloads'
match '/new_company', to: 'companies#new'
match '/resellers', to: 'companies#resellers'
match '/companies_own', to: 'companies#owns'
match '/conf_new', to: 'confs#new'
match '/conf_show_all', to: 'confs#index'
match '/conf_show_own', to: 'confs#own'
match '/conf_show', to: 'confs#show'
resources :confs do
member do
get :download
end
end
end
编辑 2: rake routes | grep 用户
users GET /users(.:format) users#index
POST /users(.:format) users#create
new_user GET /users/new(.:format) users#new
edit_user GET /users/:id/edit(.:format) users#edit
user GET /users/:id(.:format) users#show
PUT /users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy
signup /signup(.:format) users#newuser
developers /developers(.:format) users#developers
clients /clients(.:format) users#clients
EDIT3: users_controller.rb
class UsersController < ApplicationController
before_filter :signed_in_user, only:[:index, :edit, :update, :destroy]
before_filter :correct_user, only:[:edit, :update]
before_filter :admin_user, only:[:edit, :destroy]
def show
@user = User.find(params[:id])
end
def newuser
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
#sign_in @user
flash[:success] = "Welcome to the ManusWeb!"
redirect_to @user
else
render 'newuser'
end
end
helper_method :sort_column, :sort_direction
def index
@users = User.where(:role => "client").
search(params[:search]).
order(sort_column + ' ' + sort_direction).
paginate(:per_page => 10, :page => params[:page])
end
def developers
@users = User.where(:role => "developer").
search(params[:search]).
order(sort_column + ' ' + sort_direction).
paginate(:per_page => 10, :page => params[:page])
end
def clients
@users = User.where(:boss_id => codevelopers.map(&:id)).
search(params[:search]).
order(sort_column + ' ' + sort_direction).
paginate(:per_page => 10, :page => params[:page])
end
def codevelopers
@users = User.where(:company_id => current_user.company_id)
end
def edit
end
def update
if @user.update_attributes(user_params)
# Handle a successful update.
flash[:success] = "Profile updated"
sign_in @user
redirect_to @user
else
render 'edit'
end
end
def destroy
User.find(params[:id]).destroy
flash[:success] = "User deleted"
redirect_to users_url
end
def client
current_user.role == "client"
end
private
def signed_in_user
unless signed_in?
store_location
redirect_to signin_url, notice: "Please sign in"
end
end
def correct_user
@user = User.find(params[:id])
redirect_to root_url, notice: "You are not authorized to request this page" unless current_user?(@user)
end
def admin_user
redirect_to(root_path) unless (current_user.role == "admin")
end
def sort_column
(( User.column_names.include?(params[:sort]) ) || ( Company.column_names.include?(params[:sort]) )) ? params[:sort] : "name"
end
def sort_direction
%w[asc desc].include?(params[:direction]) ? params[:direction] : "asc"
end
def user_params
params.require(:user).permit( :email, :name, :password, :password_confirmation, :role, :company_id, :boss_id ) if params[:user]
end
end
最佳答案
将“重置密码”链接更改为以下内容:
<%= link_to "reset password", edit_user_path(user) %>
将 correct_user
方法更改为以下内容:
def correct_user
@user = User.find(params[:id])
redirect_to root_url, notice: "You are not authorized to request this page" unless current_user.role == "admin" or current_user?(@user)
end
关于ruby-on-rails - rails 3 管理员编辑另一个用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18821842/
在为 Web 应用程序用例图建模时,为用户可以拥有的每个角色创建一个角色是否更好?或拥有一个角色、用户和一个具有特权的矩阵? guest < 用户 < 版主 < 管理员 1: guest 、用户、版主
我无法使用 Elixir 连接到 Postgres: ** (Mix) The database for PhoenixChat.Repo couldn't be created: FATAL 28P
这个问题已经有答案了: Group by field name in Java (7 个回答) 已关闭 7 年前。 我必须编写一个需要 List 的方法并返回 Map> . User包含 Person
感谢您的帮助,首先我将显示代码: $dotaz = "Select * from customers JOIN contracts where customers.user_id ='".$_SESS
我只想向所有用户中的一个用户显示一个按钮。我尝试了 orderByKey() 但没有成功! 用户模型有 id 成员,我尝试使用 orderByChild("id") 但结果相同! 我什至尝试了以下技巧
我们在工作中从 MongoDB 切换到 Postgres,我正在建立一个 BDR 组。 在这一步,我正在考虑安全性并尽可能锁定。因此,我希望设置一个 replication 用户(角色)并让 BDR
export class UserListComponent implements OnInit{ users; constructor(private userService: UserS
我可以使用 Sonata User Bundle 将 FOS 包集成到 sonata Admin 包中。我的登录功能正常。现在我想添加 FOSUserBundle 中的更改密码等功能到 sonata
在 LinkedIn 中创建新应用程序时,我得到 4 个单独的代码: API key 秘钥 OAuth 用户 token OAuth 用户密码 我在 OAuth 流程中使用前两个。 的目的是什么?最后
所以..我几乎解决了所有问题。但现在我要处理另一个问题。我使用了这个连接字符串: SqlConnection con = new SqlConnection(@"Data Source=.\SQLEX
我有一组“用户”和一组“订单”。我想列出每个 user_id 的所有 order_id。 var users = { 0: { user_id: 111, us
我已经为我的Django应用创建了一个用户模型 class User(Model): """ The Authentication model. This contains the u
我被这个问题困住了,找不到解决方案。寻找一些方向。我正在用 laravel 开发一个新的项目,目前正致力于用户认证。我正在使用 Laravels 5.8 身份验证模块。 对密码恢复 View 做了一些
安装后我正在使用ansible配置几台计算机。 为此,我在机器上本地运行 ansible。安装中的“主要”用户通常具有不同的名称。我想将该用户用于诸如 become_user 之类的变量. “主要”用
我正在尝试制作一个运行 syncdb 的批处理文件来创建一个数据库文件,然后使用用户名“admin”和密码“admin”创建一个 super 用户。 到目前为止我的代码: python manage.
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 6 年前。 Improv
我已在 Azure 数据库服务器上设置异地复制。 服务器上运行的数据库之一具有我通过 SSMS 创建的登录名和用户: https://learn.microsoft.com/en-us/azure/s
我有一个 ionic 2 应用程序,正在使用 native FB Login 来检索名称/图片并将其保存到 NativeStorage。流程是我打开WelcomePage、登录并保存数据。从那里,na
这是我的用户身份验证方法: def user_login(request): if request.method == 'POST': username = request.P
我试图获取来自特定用户的所有推文,但是当我迭代在模板中抛出推文时,我得到“User”对象不可迭代 观看次数 tweets = User.objects.get(username__iexact='us
我是一名优秀的程序员,十分优秀!