attr_protected 'name:保護/許可したいフィールド', [, :as => 'roles:アクセスを許可するロール']
attr_accessible 'name:保護/許可したいフィールド', [, :as => 'admin:アクセスを許可するロール']
user.rb
class User < ActiveRecord::Base
...
#roles列へのマスアサインメントを禁止
attr_protected :roles
#上と同じ意味をattr_accesibleメソッドで書き換え
#attr_accessible :name, :password, :kname, :email
end
model_controller.rb
@user = User.find(1)
msg + @user.roles
admin.manager(初期値)
@user.assign_attributes(:name => 'nkakeya', :roles => 'users')
msg += @user.roles admin.manager(保護されているので更新されない)
user.rb
class User < ActiveRecord::Base...
...
#roles列へのアクセスをadminロールに対してのみ許可
#(その他の列はデフォルトのロールでアクセス可能)
attr_accessible :name, :password, :kname, :email
attr_accessible :name, :password, :kname, :email, :as => :admin
end
user.rb
class User < ActiveRecord::Base...
...
#roles列へのアクセスをadminロールに対してのみ許可
#(その他の列はデフォルトのロールでアクセス可能)
attr_accessible :name, :password, :kname, :email
attr_accessible :name, :password, :kname, :email, :as => :admin
end
model_controller.rb(protect_access2アクション)
@user = User.find(1)
msg = @user.name + '|' + @user.roles + '<br />'
yyamada|admin,manager(初期値)
@user.assign_attributes(:name => 'sato', :roles => 'users')
msg += @user.name + '|' + @user.roles + '<br />'
sato|admin,manager(保護されているのでroles列は更新されない)
@user.assign_attributes(:name => 'tanaka', :roles => 'users'),
:as => :admin)
msg += @user.name + '|' + @user.roles
tanaka|users(adminロールはすべての列を更新可能)