Je lance un appel activeesource vers un service et j'aimerais recevoir des messages d'erreur personnalisés en retour. J'ai quelques validations qui ne sont pas des validations de modèle normales, donc je ne peux pas simplement renvoyer @ object.errors. Par exemple, l'une de mes validations est la suivante:Activer le statut de l'erreur et le corps de la réponse
Deux objets ont une relation plusieurs à plusieurs, mais je veux limiter un objet à un nombre limité (disons 2) de relations avec d'autres objets. Voici un code:
Dans le client:
response = Customer.find(customer_id).put(:add_user, :user_id => user_id)
Cela met une demande d'ajout d'un utilisateur au client. Ensuite, dans le service, je veux vérifier que cette addition est valide.
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
Voici mon problème. Dans la ressource active, si le statut de retour est une erreur, le côté client échoue complètement. Je pourrais changer le statut à 200 et je récupère le message d'erreur de corps bien, mais ceci semble vaincre le but d'avoir des codes de réponse d'erreur.
je peux mettre toute appel demande du client dans un begin/bloc de sauvetage
begin
response = Customer.find(customer_id).put(:add_user, :user_id => user_id)
rescue ActiveResource::ResourceInvalid => e
#return error code
end
mais quand je prends la réponse 422 (unprocessable_entity), je reçois rien du corps arrière, donc je n » t obtenir mon message d'erreur personnalisé. response = none
Est-ce que quelqu'un sait comment je peux réaliser ce message d'erreur personnalisé avec les codes de réponse appropriés?