レールはかなり新しいので、何か誤解したことがある場合はご容赦ください。以下のようなユーザーモデルがあります。理想的には、通常のユーザーはパスワードを更新することしかできませんが、管理者はユーザー名や電子メールなどを変更できます...
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を呼び出す前に、アクセスできないパラメーターを手動で削除する方がよいでしょうか。