Si tengo un modelo ActiveRecord de la siguiente maneraevaluación de la clase Ruby, validates_inclusion_of con datos dinámicos
class Foo < ActiveRecord::Base
validates_inclusion_of :value, :in => self.allowed_types
def self.allowed_types
# some code that returns an enumerable
end
end
Esto no funciona porque el método allowed_types no se ha definido en el momento en que se evalúa la validación. Todas las soluciones que se me ocurren básicamente giran en torno a mover la definición del método por encima de la validación para que esté disponible cuando sea necesario.
Aprecio que esto sea más una pregunta de estilo de codificación que cualquier otra cosa (quiero todas mis validaciones en la parte superior del modelo y los métodos en la parte inferior) pero creo que debería haber algún tipo de solución, posiblemente ¿implica una evaluación perezosa de la carga inicial del modelo?
es lo que quiero hacer posible? ¿Debo simplemente definir el método por encima de la validación o hay una mejor solución de validación para lograr lo que quiero?
@eightbitraptor ... tratar ': en => Foo.allowed_types' en lugar de': en => self.allowed_types' ... pd Creo 'self' se hace referencia al objeto de 'Foo' en lugar de' Foo' – rubyprince