У меня есть контроллер / модель, гипотетически названная Pets. Домашние животные имеет следующие декларации:
belongs_to :owner
has_many :dogs
has_many :cats
Не лучший пример, но опять же, он демонстрирует то, что я пытаюсь решить. Теперь, когда запрос приходит как HTTP POST к http://127.0.0.1/pets
, я хочу создать экземпляр Pets. Здесь есть ограничение: если пользователь не отправит хотя бы одну собаку или одну кошку, он не пройдет проверку. Он может иметь и то и другое, но не может быть и того и другого.
Как справиться с этим в Ruby on Rails? Собаки не заботятся, существуют ли кошки, и обратное также верно. Может ли кто-нибудь показать пример кода того, как будет выглядеть модель Pets, чтобы гарантировать, что один или другой существует, или потерпеть неудачу в противном случае? Помните, что собаки и кошки не являются атрибутами модели Pets. Я не уверен, как избежать создания Pets, если его дочерние ресурсы недоступны.
errors.add также принимает атрибут, в этом случае нет конкретного атрибута, который не работает. Это почти «виртуальная» комбинация, которая отсутствует. Параметры могут иметь вид cat_name = "bob" и dog_name = "stew", основываясь на атрибуте, я должен иметь возможность создать новую кошку или собаку, но мне нужно знать, что хотя бы один из них существует.