Carriles no es compatible con los valores predeterminados dinámicos de las migraciones. Lo que haya en su migración durante su ejecución se establecerá en el nivel de base de datos y se mantendrá de esa manera hasta que la migración se retrotraiga, anule o restablezca. Pero puede agregar fácilmente valores predeterminados dinámicos en el nivel del modelo, ya que se evalúa en tiempo de ejecución.
1) Valor predeterminado utilizando after_initialize
devolución de llamada
class Test
def after_initialize
self.day ||= Date.today if new_record?
end
end
El uso de este enfoque sólo si es necesario para acceder al atributo después de la inicialización y antes de guardar el registro. Este enfoque tiene un costo de procesamiento adicional al cargar un resultado de consulta, ya que el bloque debe ejecutarse para cada objeto de resultado.
2) Valor predeterminado utilizando before_create
devolución de llamada
class Test
before_create do
self.day = Date.today unless self.day
end
end
Esta devolución de llamada se activa mediante una llamada create
en su modelo. There are many more callbacks. Por ejemplo, establecer la fecha anterior a la validación en create
y update
.
class Test
before_validation on: [:create, :update] do
self.day = Date.today
end
end
3) Utilizando el default_value_for joya
class Test
default_value_for :day do
Date.today
end
end
Muchas gracias, funciona – banhbaochay