2010-09-20 2 views
11

У меня есть отношения в моей модели, основанной ActiveRecord, который выглядит как:Рубин на Rails: вопрос о validates_presence_of

belongs_to :foo 

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

validates_presence_of :foo 

или

validates_presence_of :foo_id 

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

ответ

8

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

1

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

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

+0

validates_associated и validates_presence_of являются взаимоисключающими, если я не ошибаюсь. Я хочу убедиться, что связанный объект является частью модели. по определению, он должен быть действительным. – randombits

+0

Вам необходимо использовать validates_associated и validates_presence_of. Смотрите другие комментарии для ссылки на документацию. –

0

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