2017-08-01 55 views
0

我正在創建一個基於角色的授權的應用程序。因此,我創建了一個遷移程序來設計用戶添加一個新的列「角色「 而我的應用程序控制器中有以下代碼塊允許新參數(角色)。但仍然當我嘗試註冊爲新用戶時。我得到參數角色不允許的錯誤。請幫助我解決這個問題。如何在實現基於角色的授權時在rails(設計)中允許一個新參數

class ApplicationController < ActionController::Base 
    protect_from_forgery with: :exception 
    before_action :configure_permitted_parameters, if: :devise_controller? 
protected 
def configure_permitted_parameters 
    devise_parameter_sanitizer.permit(:sign_up) { |u| u.permit( :email, :password, :password_confirmation, roles: []) } 
end 

end 

這是我有我的用戶模型

class User < ApplicationRecord 
    belongs_to :role 
    # has_many :Product 
    # Include default devise modules. Others available are: 
    # :confirmable, :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

     ROLES = %i[admin manager customer] 

def user_params 
    params.require(:user).permit(:name, :email, :password, :password_confirmation, :role) 
end 


end 

遷移是如下

class AddRoleToUsers < ActiveRecord::Migration[5.0] 
    def change 
    add_column :users, :role, :string 
    end 
end 

請幫我解決這個issue.Thank你。

+0

[添加自定義參數以設計註冊 - 未經許可的參數](https://stackoverflow.com/questions/42572124/adding-custom-parameters-to-devise-registration-unpermitted-parameters) – Gerry

+0

可能的重複[添加新字段導致錯誤](https://stackoverflow.com/questions/43307494/adding-a-new-field-causes-an-error) –

回答

2

您的用戶模型無權訪問參數,因此您可以從中刪除user_params方法。除非你嵌套屬性,你就不必在數組中的角色屬性中傳遞,所以更改

devise_parameter_sanitizer.permit(:sign_up) { |u| u.permit( :email, :password, :password_confirmation, roles: []) } 

devise_parameter_sanitizer.permit(:sign_up) { |u| u.permit( :email, :password, :password_confirmation, :role) } 

,你應該是好去。

+0

仍然得到相同的結果 –

+0

開始POST「/ users」for 127.0.0.1在2017-08-01 19:29:24 +0530 處理由Devise :: RegistrationsController#創建爲HTML 參數:{「utf8」=>「✓」,「authenticity_token」=>「OH3R7o1M + 0BkzD2iVG/yHiovWZ1oj0wBafxgU5C2kBu1q3LD5dNWcVpDQ/c6QwfpZ2UTINpghRYYxmodUxBT + Q ==「,」user「=> {」email「=>」[email protected]「,」password「=>」[FILTERED]「,」password_confirmation「=>」[FILTERED]「, 「角色」=> 「012」,「確認」=>「註冊」} 未經許可的參數:角色 –

+0

(0.1ms)開始交易 用戶存在(11.1ms)SELECT 1 AS one FROM「users」WHERE「users」。「email」 =?限制? [[「email」,「[email protected]」],[「LIMIT」,1]] (0.1ms)回滾事務 –

相關問題