2014-10-10 64 views

回答

12

是的,這是可能的。

你可以做這樣的事情:

def user_params 
    # List of common params 
    list_params_allowed = [:email, :title, :last_name, :first_name, :phone] 
    # Add the params only for admin 
    list_params_allowed << :role if current_user.admin? 
    params.require(:user).permit(list_params_allowed) 
end 

這樣,如果以後你有新的參數,可以,你只需要在一個列表(避免錯誤)添加。

如果你有一個以上的參數去添加爲admin,你可以做到這一點是這樣的:

list_params_allowed << :role << other_param << another_param if current_user.admin? 

希望這有助於。

+1

'list_params_allowed + = [:role] if current_user.admin?'聽起來更好,特別是如果你以後可能想添加更多的參數。 – rubyprince 2014-10-10 20:13:38

+0

@rubyprince感謝您的評論。你能解釋爲什麼比每個參數的''''''''解決方案都好? (只是爲了理解)它是更快還是更「紅寶石」的方式...? – 2014-10-10 20:20:02

+0

我會說這是更紅寶石的方式,更易於維護。我可以這樣寫'admin_only_parameters = [:role]; list_params_allowed + = admin_only_parameters if current_user.admin?',然後改變'admin_only_parameters'。 – rubyprince 2014-10-10 20:43:05