Rails и проверка модели
-
19-09-2019 - |
Вопрос
Я хочу провести проверку на уровне модели в следующей таблице:
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
...
?
Решение
Чтобы проверить наличие ассоциации, используйте ее имя, без _id
добавлено:
validates_presence_of :library
Это подтвердит две вещи:
library_id
настоящее- а
Library
с даннымid
существует
С использованием validates_presence_of :library_id
даст вам только первую проверку из двух.
Кроме того, версия без _id
также будет правильно проверять, являются ли обе записи новыми (и, следовательно, library_id
все еще не настроен).
Не связан с StackOverflow