Witam, kod wygląda tak, mam coś podobnego w kilku kontrolerach, jak widać chodzi o dodanie dynamicznie dwóch atrybutów w params.
Czy można to jakoś fajnie zrefaktoryzować żeby wstrzykiwać to w każdym z kontrolerów za pomocą np concerns ?
def project_params
if action_name == 'create' || current_user.can_change_acl?(@project)
params.require(:project).permit(:name, :description, :status, :tag_list, :access, {custom_user_ids: []})
else
params.require(:project).permit(:name, :description, :status, :tag_list)
end
end
[code]#app/controllers/application_controller.rb
def allowed_params
allowed = ALLOWED_PARAMS
allowed += ADDITIONAL_PARAMS if action_name == ‘create’ || current_user.can_change_acl?(@more_universal_name_or_method)
params.require(MODEL_NAME).permit( *allowed)
end
a w kontrolerach
ALLOWED_PARAMS = [:name, :description, :status, :tag_list]
ADDITIONAL_PARAMS = [ :access, {custom_user_ids: []}]
MODEL_NAME = :user[/code]
ew. zamiast MODEL_NAME zrobić metodę do wyciągania symbolu z nazwy kontrolera, lub zmienić stałe na metody + w application_controller raise NotImplemented jeżeli nie zostały zdefiniowane w kontrolerze