私はサービスへのアクティブなリソース呼び出しを行っています。カスタムエラーメッセージをフィードバックしたいと思います。通常のモデルバリデーションではないバリデーションがいくつかあるので、@ object.errorsを返すことはできません。activeresourceエラーステータスとレスポンスボディ
たとえば、私の検証の1つはこれです。 2つのオブジェクトには多対多の関係がありますが、他のオブジェクトとの関係の数が限られている(たとえば2つ)ように1つのオブジェクトを制限したいとします。クライアントで
::これは、顧客にユーザーを追加する要求を置く
response = Customer.find(customer_id).put(:add_user, :user_id => user_id)
ここではいくつかのコードです。その後、サービスでこの追加が有効であることを確認したいと思います。
def add_user
@user = User.find(params[:user_id])
@customer = Customer.find(params[:id])
if @customer.users.length > 2
render :xml => "ERR_only_2_users_allowed", :status => :unprocessable_entity
end
end
これは私の問題です。アクティブリソースでは、戻り状況がエラーの場合、クライアント側は完全に失敗します。私はステータスを200に変更することができ、私はボディのエラーメッセージを正常に戻しますが、これはエラー応答コードを持つ目的を無効にするようです。
私は開始/救助ブロック
begin
response = Customer.find(customer_id).put(:add_user, :user_id => user_id)
rescue ActiveResource::ResourceInvalid => e
#return error code
end
で、クライアントからのリクエスト全体のコールを置くことができますが、私は422(unprocessable_entity)応答をキャッチしたときに、「私は後ろ身頃の何を取得、私はドン私のカスタムエラーメッセージを取得しないでください。 response = nil
どのように私は適切な応答コードでこれらのカスタムエラーメッセージを達成することができます知っていますか?