2010-06-19 2 views

Respuesta

15

before_validation_on_create ocurren antes de la validación de crear ... pero no son validaciones mismos.

Lo que probablemente quiera hacer es usar validate y un método privado que se suma a la matriz de error. de esta manera:

class IceCreamCone 

    validate :ensure_ice_cream_is_not_melted, :before => :create 

    private 
    def ensure_ice_cream_is_not_melted 
     if ice_cream.melted? 
     errors.add(:ice_cream, 'is melted.') 
     end 
    end 
    end 
+1

Me gusta su ejemplo en particular. –

+1

Este ejemplo me hace reír como una niña en la oficina – bpromas

+3

¡Me alegro de que te guste! Olvidé que escribí esto hace 5 años. Para el registro, los niños pequeños también pueden reírse. –

1

Hay un gran recurso aquí para obtener información sobre las devoluciones de llamada y el orden en que suceden en: ganchos

http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html

+0

¿Por qué se bajó este voto? Apunta a una documentación muy clara que describe la solución al problema del PO y una mejor comprensión de las validaciones en general. – JohnMetta

+1

Ha sido downvoted porque no es una respuesta, es solo un enlace a una referencia externa. – henrebotha

29

En los carriles 3

before_validation_on_create :do_something 

se ha sustituido por:

before_validation :do_something, :on => :create 
+0

No creo que esto resuelva la cuestión de ejecutar validaciones personalizadas antes de la creación, pero responde la pregunta con la que vine aquí. – mwfearnley

2

Los siguientes trabajó para mí en los carriles 5:

validate :custom_validation_method, :on => :create

Corriendo

validate :custom_validation_method, :before => :create

me dio error siguiente:

Unknown key: :before. Valid keys are: :on, :if, :unless, :prepend. 
Cuestiones relacionadas