也许我会过分验证,但是我想确保在收到POST请求时,它包含特定的特定值(可以通过params.require()完成),并且这些值是特定的类型:哈希,数组,字符串。 TBH,我什至不确定可以通过POST请求传输的所有类型。问题是,使用.is_a时,对象显示为ActionController :: Parameters类型?如果有更好的方法可以做到这一点,请告诉我。
答案 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()
仅获取哈希键,如果不存在则引发异常。
您实际上想要做的是应该通过验证在模型级别处理的事情,而不是使您的控制器变胖。