Pergunta

Quero colocar uma validação no nível do modelo na tabela a seguir:

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

Isso significa que meu modelo, que (até agora) se parece:

class Audio < ActiveRecord::Base
  belongs_to :library
end

Tem

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

ou

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

?

Foi útil?

Solução

Para validar a presença de uma associação, use seu nome, sem _id anexado:

validates_presence_of :library

Vai validar duas coisas:

  1. library_id é presente
  2. uma Library com o dado id existe

Usando validates_presence_of :library_id só dará a você a primeira validação dos dois.

Além disso, a versão sem _id também validará corretamente se ambos os registros forem novos (e, portanto, library_id ainda não é definido).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top