Rails (или, точнее, Rack) может анализировать массивы и хэши из параметров, созданных с помощью атрибута name
.
Например:
# simple hash
user[email]="test@example.com"
# nested hash
user[address][street]="Easy Street 21"
# an array with 3 elements
user[some_arrray_param][]="1"
user[some_arrray_param][]="2"
user[some_arrray_param][]="3"
Когда вы получаете ключ, содержащий «хеш» из параметров с .require
или .fetch
, они фактически возвращают экземпляр ActionController::Parameters
, который является хеш-подобным объектом, но помимо прочего имеет интерфейс сильных параметров Rails.
.require()
просто получает хеш-ключ и вызывает исключение, если его нет.
То, что вы пытаетесь сделать, - это то, что нужно обрабатывать на уровне модели посредством валидации, а не для того, чтобы сделать ваши контроллеры полными.