Ruby on Rails: вопрос о validates_presence_of

У меня есть отношения в моей модели на основе ActiveRecord, которая выглядит так:

belongs_to :foo

Моя модель всегда должна иметь foo в ней, чтобы она была действительной. Мой вопрос заключается в том, что при использовании validates_presence of, какой из них подходит для использования:

validates_presence_of :foo

или

validates_presence_of :foo_id

Предполагая здесь, конечно, что foo_id - это соответствующий внешний ключ, который по умолчанию, если вы не меняете ключ ассоциации.

Ответ 1

Первый: validates_presence_of :foo (хотя я думаю, что второй тоже будет работать). В общем случае помощники проверки правильности Ruby работают с именами моделей, а не с явными именами столбцов. Вы можете использовать это в дополнение к validates_associated для проверки состояния связанного объекта в дополнение к его присутствию.

Ответ 2

Возможно, вы захотите рассмотреть validates_associated

Это гарантирует, что ассоциация действительна.

Ответ 3

Я использую validates_presence_of :foo_id. Он работает.