我已经搜索了一段时间,但目前还找不到满意的答案。我有两个应用。 FrontApp和BackApp。 FrontApp具有一个事件资源,该资源模仿BackApp中的模型。所有模型级别的验证都存在于BackApp中,我需要在FrontApp中处理这些BackApp验证。

我有以下事件资源代码:

class RemoteUser < ActiveResource::Base
  self.site = SITE
  self.format = :json
  self.element_name = "user"
end

这模拟了如下模型
class User < ActiveRecord::Base

  attr_accessor :username, :password

  validates_presence_of :username
  validates_presence_of :password
end

每当我在前端应用程序中创建新的RemoteUser时;我称它为.save。例如:
user = RemoteSession.new(:username => "user", :password => "")
user.save

但是,由于密码为空,因此我需要将错误从BackApp传递回FrontApp。这没有发生。我只是不明白如何成功地做到这一点。这必须是一个常见的集成方案;但是似乎没有一个好的文档?

我的 Restful Controller 充当代理,如下所示:
class UsersController < ActionController::Base
  def create
    respond_to do |format|
      format.json do
        user = User.new(:username => params[:username], :password => params[:password])
        if user.save
          render :json => user
        else
          render :json => user.errors, :status => :unprocessable_entity
        end
      end
    end
  end
end

我想念的是什么?任何帮助都感激不尽。

干杯

最佳答案

从Rails源代码中,我发现ActiveResource没有得到错误的原因是因为我没有将错误分配给json中的“errors”标签。它没有记录,但是是必需的。 :)

所以我的代码应该是:

render :json => {:errors => user.errors}, :status => :unprocessable_entity

10-01 13:12