如何检查Rails中的参数类型?

时间:2018-09-09 08:04:05

标签: ruby-on-rails ruby-on-rails-5

也许我会过分验证,但是我想确保在收到POST请求时,它包含特定的特定值(可以通过params.require()完成),并且这些值是特定的类型:哈希,数组,字符串。 TBH,我什至不确定可以通过POST请求传输的所有类型。问题是,使用.is_a时,对象显示为ActionController :: Parameters类型?如果有更好的方法可以做到这一点,请告诉我。

1 个答案:

答案 0 :(得分:0)

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()仅获取哈希键,如果不存在则引发异常。

您实际上想要做的是应该通过验证在模型级别处理的事情,而不是使您的控制器变胖。