rails 4 strong params: make them conditional?

2019-04-30 07:59发布

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?

2条回答
Deceive 欺骗
2楼-- · 2019-04-30 08:12

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

查看更多
做自己的国王
3楼-- · 2019-04-30 08:31

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) }
查看更多
登录 后发表回答