J'ai parcouru la documentation pour obtenir ActiveRecord
validation fonctionnant avec ActiveModel
. Pour une raison quelconque, je ne vois aucun résultat de validation retourné.Validation de Rails avec ActiveModel
J'ai un ensemble de modèles qui, au lieu d'interfaçage avec ActiveRecord
, s'interfaçent via une API personnalisée qui sera installée derrière Rails.
Le modèle:
class ApiObject < ApiConnector
include ActiveModel::Validations
attr_accessor :fieldName
validates :fieldName, :presence => true
def save
#save method implementation
end
end
Le contrôleur:
def create
@apiObject = ApiObject.new(params[:api_object])
respond_to do |format|
if @apiObject.save
format.html { redirect_to(@apiObject, :notice => 'User was successfully created.') }
format.xml { render :xml => @apiObject, :status => :created, :location => @apiObject }
else
format.html { render :action => "new" }
format.xml { render :xml => @apiObject.errors, :status => :unprocessable_entity }
end
end
end
Le formulaire:
<%= form_for :api_object, :url => '/apiobjectcontroller/' do |f| %>
<%= f.label :fieldName, 'Field Name' %>
<%= f.text_field :fieldName %>
<%= f.submit 'Create'%>
<% end %>
Je suit le code Disposées ici: Rails ActiveModel Validation
La méthode retourne correctement au formulaire car @ apiObject.save renvoie false, mais aucune réponse de validation ne revient. J'ai vérifié le balisage et les résultats habituels de validation des rails ne sont pas retournés. Qu'est-ce que je rate?
J'ai ajouté les deux et je ne reçois toujours rien quand il revient. La collection d'erreurs est vide. –
La collection d'erreurs est seulement remplie lorsqu'elle est valide? est appelé. Peut-être que vous devez appeler manuellement valide? – Scott
Merci Scott qui a travaillé. Après avoir modifié le formulaire pour utiliser une variable d'instance, je devais ajouter un appel à valide? Apparemment, il n'était pas mentionné dans la documentation sur la validation ActiveModel. Heureusement, cela fonctionne maintenant. –