Domanda

Voglio mettere un po 'di convalida dei livelli del modello sulla tabella seguente:

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

Questo significa, che il mio modello, che (finora) si presenta come:

class Audio < ActiveRecord::Base
  belongs_to :library
end

ha

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

o

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

È stato utile?

Soluzione

Per verificare la presenza di un'associazione, utilizzare il suo nome, senza _id aggiunto:

validates_presence_of :library

Si convaliderà due cose:

  1. library_id è presente
  2. un Library con il dato id esiste

Utilizzando validates_presence_of :library_id solo vi darà la prima convalida dei due.

In aggiunta a questo, la versione senza _id anche convalidare correttamente se entrambi i record sono nuovi (e quindi library_id è ancora impostata).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top