2010-09-20 15 views
11

que tienen una relación en mi modelo basado ActiveRecord que se parece a:Ruby on Rails: pregunta sobre validates_presence_of

belongs_to :foo 

Mi modelo siempre debe haber foo definido en él para que sea válido. Mi pregunta es, cuando se utiliza validates_presence de, ¿cuál es el adecuado para usar:

validates_presence_of :foo 

o

validates_presence_of :foo_id 

Suponiendo aquí, por supuesto, que foo_id es la clave externa adecuada, que es por predeterminado si no cambia la clave de asociación.

Respuesta

8

El primero: validates_presence_of :foo (aunque creo que el segundo también funcionará). En general, los ayudantes de validación de Ruby trabajan con nombres de modelos en lugar de nombres de columnas explícitos. Puede usar este además devalidates_associated para validar el estado de la entidad asociada además de su presencia.

1

Es posible que desee considerar validates_associated

Esto se asegurará de que la asociación es válida.

+0

validates_associated y validates_presence_of son mutuamente excluyentes si no estoy confundiendo. Quiero asegurarme de que el objeto asociado sea parte del modelo. por definición, debería ser válido en sí mismo. – randombits

+0

Debe usar tanto validates_associated como validates_presence_of. Ver otro comentario para el enlace a la documentación. –

0

Yo uso validates_presence_of :foo_id. Funciona.