LoginSignup
0
0

More than 5 years have passed since last update.

attr_protected/accessibleメソッド 登録・更新時に保護

Last updated at Posted at 2017-02-26

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ロールはすべての列を更新可能)


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0