Как проверить, что родительский объект имеет допустимый дочерний объект (Rails) - PullRequest
1 голос
/ 12 февраля 2011

Допустим, у меня есть модель ActiveRecord с именем Книга , которая имеет ассоциацию has_many с моделью Страницы .

class Book < ActiveRecord::Base
  has_many :pages
end

Я хотел бы знать, существует ли установленный метод, гарантирующий, что объект Book не может быть сохранен в базе данных, если с ним не связан хотя бы один действительный объект Page. Моя цель не в том, чтобы проверить наличие ассоциации, а в том, чтобы убедиться, что родительский объект действительно имеет допустимый дочерний объект. Имеет ли это смысл? Это на самом деле случай тестирования ассоциации? Я знаком с методом validates_associated, но эта проверка не завершится неудачей, если связь не была назначена, но как мне убедиться, что на другой стороне ассоциации есть действительный объект?

1 Ответ

2 голосов
/ 12 февраля 2011

Из документации Rails 2.3.2 для validates_associated:

ПРИМЕЧАНИЕ. Эта проверка не завершится ошибкой, если Ассоциация не была назначена. Если вы хотите убедиться, что ассоциация присутствует и гарантированно будет действительным, вам также нужно использовать validates_presence_of .

...