Основываясь на авторизации пользователей, я хотел бы очистить параметры, включив в них те, которые им разрешено обновлять. Для одной модели есть 5 разных ролей, и я бы не стал перечислять 25 возможных комбинаций и называть
params.require(:asset).permit(вещи)
25 раз
Есть ли способ «построить» сильные параметры? Единственный возможный способ, который я нашел, - это "слияние", но я не могу заставить его работать
Вот где я нахожусь:
def update_params
p = params.require(:asset)
if can? :update, Asset
p.merge params.require(:asset).permit(:code, :description)
end
if can? :update, Ability::THING1
p.merge params.require(:asset).permit(:some_nested_stuff => [:id, :quantity, :_destroy],
:some_other_nested_stuff => [:id, :quantity, :_destroy])
end
if can? :update, Ability::THING2
p.merge params.require(:asset).permit(more_nested_stuff: [:id, :date, :note])
end
if can? :update, AssetNote
p.merge params.require(:asset).permit(notes_attributes: [:id, :note, :_destroy])
end
p
end
При этом я получаю «ForbiddenAttributesError» вместо того, чтобы просто выбрасывать атрибуты.