我有一种情况,其中用户将一些数据提交到将在后台处理的 Web 服务器(Rails):
POST /fibonacci/6012 HTTP/1.1
Host: example.com
服务器响应一个指向后台作业的链接,用户可以使用该链接检查状态:
HTTP/1.1 202 Accepted
Location: http://example.com/jobs/5699121
需要注意的重要一点是,任何(授权的)用户都可以检查作业的状态。这意味着我必须将工作人员的任何错误消息象征性地传回 Web 服务器。对于 ActiveModel 错误,我想不出办法。例如:
class FibonacciCalculation
include ActiveModel::Validations
attr_reader :input
validates_presence_of :input
validates_inclusion_of :input, :in => 0..10_000,
:allow_blank => true
def initialize(params = {})
@input = params[:input]
end
def output
# do fibonacci calculation
end
end
如果我创建这样一个对象FibonacciCalculation.new(:input => -5)
然后消除错误,我会得到一个ActiveModel::Errors
对象,但我不知道如何序列化它。Asking forerrors[:input]
给我["can't be blank"]
or ["is not included in the list"]
,已经翻译好了。同样,errors.as_json
返回类似
`{ "errors" => [ "can't be blank" ] }`
我怎样才能得到类似{ :input => [:blank] }
or的东西{ :input => [:inclusion] }
?