3 Stimmen

Rails und Modellvalidierung

Ich möchte eine Validierung auf Modellebene für die folgende Tabelle durchführen:

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

Bedeutet dies, dass mein Modell, das (bisher) aussieht wie:

class Audio < ActiveRecord::Base
  belongs_to :library
end

Hat

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

o

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

?

5voto

molf Punkte 70728

Um das Vorhandensein einer Assoziation zu bestätigen, verwenden Sie ihren Namen, ohne _id angehängt:

validates_presence_of :library

Sie wird zwei Dinge bestätigen:

  1. library_id vorhanden ist
  2. a Library mit dem angegebenen id existiert

Verwendung von validates_presence_of :library_id gibt Ihnen nur die erste der beiden Validierungen.

Darüber hinaus ist die Version ohne _id prüft auch korrekt, ob beide Datensätze neu sind (und daher library_id noch nicht gesetzt ist).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X