对rails相当陌生,如果我误解了什么,请原谅我。我有一个如下所示的用户模型。理想情况下,我想做的是让普通用户只能更新他们的密码,但让管理员能够更改他们的用户名、电子邮件等......
class User < ActiveRecord::Base
# Default auths
attr_accessible :password, :password_confirmation, :remember_me
# Admin auths
attr_accessible :login, :username, :email, :password, :password_confirmation, :remember_me, :role_ids, :as => :admin
end
要以管理员身份更新记录,我执行以下操作:
@user.update_attributes(params[:user], :as => :admin)
但是可以说我想以非管理员身份更新用户记录:
@user.update_attributes(params[:user])
我收到以下异常:
ActiveModel::MassAssignmentSecurity::Error in UsersController#update
Can't mass-assign protected attributes: email, username
我想要发生的是忽略不可访问的参数,只更新可访问的属性,而目前整个更新失败。这可能吗?更重要的是,这是推荐的做事方式吗?在调用 update_attributes 之前手动去除不可访问的参数会更好吗?