Pregunta

Quiero poner un poco de validación a nivel de modelo en la siguiente tabla:

create_table :audios do |t|
  t.integer :library_id, :null => false
  t.string :file, :null => false, :limit => 2048
  t.string :name, :limit => 512
  t.timestamps
end

¿Quiere decir esto, que mi modelo, que (hasta ahora) se ve así:

class Audio < ActiveRecord::Base
  belongs_to :library
end

Tiene

class Audio < ActiveRecord::Base
  validates_presence_of :library
  ...

o

class Audio < ActiveRecord::Base
  validates_presence_of :library_id
  ...

¿Fue útil?

Solución

Para validar la presencia de una asociación, utilizar su nombre, sin _id anexa:

validates_presence_of :library

Se validará dos cosas:

  1. library_id está presente
  2. existe un Library con el id dado

El uso de validates_presence_of :library_id sólo le dará la primera validación de los dos.

Además de esto, la versión sin _id también valida correctamente si ambos registros son nuevos (y por lo tanto library_id es todavía desconectado).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top