Question

Je veux mettre une validation au niveau du modèle sur le tableau suivant:

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

Est-ce que cela veut dire, que mon modèle, qui (à ce jour) ressemble à:

class Audio < ActiveRecord::Base
  belongs_to :library
end

A

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

ou

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

Était-ce utile?

La solution

Pour valider la présence d'une association, utiliser son nom, sans _id en annexe:

validates_presence_of :library

Il validera deux choses:

  1. library_id est présent
  2. un Library avec le id donné existe

En utilisant validates_presence_of :library_id ne vous donnera la première validation des deux.

En plus de cela, la version sans _id validera également correctement si les deux dossiers sont nouveaux (et donc library_id est encore unset).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top