Rails и валидация моделей - PullRequest
       10

Rails и валидация моделей

3 голосов
/ 10 февраля 2010

Я хочу добавить проверку уровня модели в следующую таблицу:

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

Значит ли это, что моя модель, которая (пока) выглядит так:

class Audio < ActiveRecord::Base
  belongs_to :library
end

Имеет

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

или

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

1 Ответ

5 голосов
/ 10 февраля 2010

Чтобы проверить наличие ассоциации, используйте ее имя, без _id с добавлением:

validates_presence_of :library

Это подтвердит две вещи:

  1. library_id присутствует
  2. a Library с данным id существует

Использование validates_presence_of :library_id даст вам только первое подтверждение двух.

В дополнение к этому версия без _id также будет корректно подтверждена, если обе записи новые (и, следовательно, library_id все еще не установлена).

...