Ваши "методы сильных параметров" - это просто методы Ruby.Вы можете иметь сколько угодно.
class PostsController < ApplicationController
def create
@post = Post.new(post_params)
end
def update
@post = Post.find(params[:id])
if @post.update(update_params)
# ...
else
# ...
end
end
private
def base_params
params.require(:post)
end
# Don't take IDs from the user for assignment!
def update_params
base_params.permit(:body, :title)
end
def create_params
base_params.permit(:body, :title, :foo, :bar)
end
end
Вы также можете назвать их как хотите.Называть его [resource_name]_params
- это просто условное обозначение.
Но сильные параметры - это всего лишь механизм для внесения в белый список параметров, чтобы избежать уязвимостей массового назначения.Они магически не санируют параметры (кроме разрешения только определенных скалярных типов).
В 99,9% случаев вы будете обрабатывать только параметры с сильными параметрами в обновлении и создавать действия, соответствующие POST и PUT /PATCH.Это действия, которые берут хэши параметров у пользователя и передают их моделям.Именно здесь есть потенциальная уязвимость массового назначения, если вы не будете осторожны с внесением в белый список разрешенных параметров.
Действие show
, edit
и destroy
обычно принимает только один параметр в форме идентификатора.new
редко принимает какие-либо параметры, а index
принимает параметры, только если вы строите какой-либо поиск или фильтрацию.
show
, edit
, new
и index
являются маршрутами GET, поэтомуони должны быть идемпотентными и не изменять и не создавать ресурсы.
Ни один из них не имеет реального потенциала для уязвимостей массового назначения, если вы действительно не испортили все полностью.