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 является подходящим внешним ключом, который используется по умолчанию, если вы не меняете ключ ассоциации.

Ответы на вопрос(3)

Вы можете рассмотретьvalidates_associated

Это позволит убедиться, что ассоциация действительна.

 randombits21 сент. 2010 г., 00:03
validates_associated и validates_presence_of являются взаимоисключающими, если я не ошибаюсь. Я хочу убедиться, что связанный объект является частью модели. по определению, он должен быть действительным сам по себе.
 Richard Cook21 сент. 2010 г., 00:09
Вам нужно использовать и validates_associated, и validates_presence_of. Смотрите другой комментарий для ссылки на документацию.
Решение Вопроса

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

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

Ваш ответ на вопрос