La verdad es que yo suelo validar en el modelo porque entiendo que es el responsable de su contenido. De hecho, la capa modelo contiene la lógica del negocio, así que tiene sentido que sea autosuficiente.
Esa capa modelo es compartida por distintos controllers (ya sean servicios web, scripts que corren en un cron, páginas web, ... ), y estos leen y pasan datos.
Creo que en RubyOnRails dentro del activeRecord se definen las reglas de validación, por ejemplo:
Código PHP:
class Nota < ActiveRecord::Base
validates_presence_of :titulo, :intro, :texto
validates_length_of :titulo, :minimum => 5 , :maximum => 120,
validates_length_of :intro, :maximum => 250, :too_long => "Usted ingreso mas caracteres que los {{count}} permitidos"
end
Respecto a validar con javascript en el lado del cliente, suelo seguir este esquema:
formulario web -> (ajax, envío campos del formulario) -> controlador -> modelo (valida datos) -> controlador -> (json) -> formulario web
Lo que pasa es que como en todos los sitios veo la validación en el controlador, quería compartir mis dudas con otros programadores.
Validar en los controladores puede ser útil cuando implique a varios modelo a la vez, pero sigo teniendo mis dudas.
Para mí, lo ideal es tener una capa modelo robusta, con consistencia, que implemente toda la lógica del negocio sin necesidad de controladores ni vistas, y para que eso se cumpla debe poder autovalidarse.