Вы должны переместить ваше условие на достаточно высокий уровень, чтобы иметь возможность ссылаться на все свойства, на которые оно должно ссылаться. В данном случае это схема /definitions/Base
. Тогда вам просто нужно правильно написать свои схемы, как объяснил Relequestual.
{
"$ref": "#/definitions/Base",
"definitions": {
"Base": {
"type": "object",
"properties": {
"session": { "$ref": "#/definitions/Session" },
"sdk": { "$ref": "#/definitions/SDK" }
},
"allOf": [
{
"if": {
"properties": {
"sdk": {
"properties": {
"name": { "const": "ios" }
}
}
},
"required": ["sdk"]
},
"then": {
"properties": {
"session": {
"properties": {
"session_id": { "pattern": "A" }
}
}
}
},
"else": {
"properties": {
"session": {
"properties": {
"session_id": { "pattern": "B" }
}
}
}
}
}
]
},
...
}
Это не находит Вашу модель Instruction. Удостоверьтесь, что это находится в каталоге моделей, соответственно названном, расширяется ActiveRecord::Base
, и т.д.
Кроме того, необходимо удалить :dependent => :destroy
от belongs_to :client
строка в модели UserClient, если Вы действительно не хотите, чтобы удаление user_client привело к удалению клиента. Это кажется, что должно быть наоборот, и это уже настраивается в модели Client.