rails 4 strong params: make them conditional?

馋奶兔 提交于 2019-12-22 07:07:43

问题


Is there a way to make strong_params conditional? Without the need to write 2 separate methods? In case where one would like to add certain attributes to the permit list when a certain condition is true

For example:

devise_parameter_sanitizer.for(:user) {|u| u.permit(:user,
                                                    :email,
                                                    :role,
                                                    )}

I have this :role attribute permitted in above example. I only want this attribute to be permitted when in Rails.env.development is there a way to do this?


回答1:


Does this achieve the desired results?

user_params = [ :user, :email, (:role if Rails.env.development?) ].compact
devise_parameter_sanitizer.for(:user) { |u| u.permit(*user_params) }



回答2:


Haven't found a solution, so I made 2 methods and call the correct param method to handle the records.



来源:https://stackoverflow.com/questions/19536672/rails-4-strong-params-make-them-conditional

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!