Rails e Model Validation
-
19-09-2019 - |
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
...
Soluzione
Per verificare la presenza di un'associazione, utilizzare il suo nome, senza _id
aggiunto:
validates_presence_of :library
Si convaliderà due cose:
-
library_id
è presente - un
Library
con il datoid
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