Как проверить тип параметра в рельсах? - PullRequest
0 голосов
/ 09 сентября 2018

Может быть, я перебираю проверки, но я хочу убедиться, что когда я получаю запрос POST, он содержит конкретные конкретные значения (это может быть сделано через params.require ()), и что эти значения имеют определенный Тип: хеш, массив, строка. TBH, я даже не уверен во всех типах, которые могут быть переданы через запрос POST. Проблема в том, что объекты отображаются как ActionController :: Parameters типа при использовании .is_a? Если есть лучший способ сделать это в рельсах, дайте мне знать.

1 Ответ

0 голосов
/ 09 сентября 2018

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() просто получает хеш-ключ и вызывает исключение, если его нет.

То, что вы пытаетесь сделать, - это то, что нужно обрабатывать на уровне модели посредством валидации, а не для того, чтобы сделать ваши контроллеры полными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...