我正在使用可以使用相当多参数的rails构建API。理想情况下,如果用户在请求中包含一个额外的,不必要的参数,这不会使请求模糊不清,我想像往常一样处理它。这显然阻止我简单地写
ApiRequest.new(params)
因为如果params散列中有任何额外的内容,将抛出UnknownAttributeError。是否有一种拒绝额外属性的简单方法,或者我必须编写一个方法来在创建新对象之前手动验证请求。此外,如果发生这种情况,我是否应该使用HTTP 400进行响应?
谢谢, 汤姆
答案 0 :(得分:1)
感谢Sergio的建议,我最终在我的ApiRequest类中添加了以下初始化方法,这允许我无论散列中的内容是什么都可以进行大量分配。如果有人使用它,请确保在需要时确保属性为attr_protected。
def initialize(params)
params.delete_if {|k| !self.respond_to? "#{k}="}
super
end