Ես այժմ աշխատում եմ Ruby on Rails API-ի Swagger-ի փաստաթղթերի վրա: API-ն ունի բազմաթիվ հաշվիչներ (enums), որոնք ներառված են տարբեր մոդելներում: Համարները պահվում են app/models/concerns
գրացուցակում, որպեսզի հասանելի լինեն բոլոր անհրաժեշտ մոդելներին:
State Enum (state.rb)
module State
extend ActiveSupport::Concern
included do
enum state: { state1: 'State 1',
state2: 'State 2',
state3: 'State 3',
state4: 'State 4',
state5: 'State 5'' }
end
end
Country Enum (country.rb)
module Country
extend ActiveSupport::Concern
included do
enum country: { nigeria: 'Nigeria',
belarus: 'Belarus',
canada: 'Canada',
russia: 'Russia',
poland: 'Poland' }
end
end
Այս 2 հաշվարարները ներառված են Օգտվողի մոդելում և այլ մոդելներում:
Օգտվողի մոդել (user.rb)
class User < ApplicationRecord
include State
include Country
end
Ադմինիստրատորի մոդել (admin.rb)
class Admin < ApplicationRecord
include State
include Country
end
Եվ, հետևաբար, դրանք Admin
և User
API-ների հարցումների մարմինների (բաղադրիչների) մի մասն են:
Ես ուզում եմ սա ներկայացնել Swagger-ի փաստաթղթերում այնպես, որ State
և Country
հաշվարարները կրկնօրինակված չլինեն միմյանց համար: Այլ կերպ ասած, ես այնուհետև սահմանում եմ որպես սխեմայի բաղադրիչներ և այնուհետև հղում եմ անում դրանք User
և Admin
սխեմայի բաղադրիչներում՝ ծածկագիրը DRY պահելու համար:
components:
schemas:
User:
type: object
properties:
id:
type: integer
format: int64
first_name:
type: string
last_name:
type: string
password:
type: string
format: password
state:
schema:
$ref: '#/components/schemas/State'
country:
schema:
$ref: '#/components/schemas/Community'
Admin:
type: object
properties:
id:
type: integer
format: int64
first_name:
type: string
last_name:
type: string
password:
type: string
format: password
state:
schema:
$ref: '#/components/schemas/State'
country:
schema:
$ref: '#/components/schemas/Country'
State:
type: string
description: List of States
enum: { state1: 'State 1',
state2: 'State 2',
state3: 'State 3',
state4: 'State 4',
state5: 'State 5'' }
Country:
type: string
description: List of Countries
enum: { nigeria: 'Nigeria',
belarus: 'Belarus',
canada: 'Canada',
russia: 'Russia',
poland: 'Poland' }
end
Բայց հետո ես ստանում եմ այս սխալը
չպետք է ունենա լրացուցիչ հատկություններ
լրացուցիչ հատկություն՝ սխեման
Ես փորձել եմ բազմաթիվ լուծումներ, բայց թվում է, թե այս պահին ոչ մեկը չի աշխատում: Ես կգնահատեի ցանկացած ձևի օգնություն այս հարցում: Շնորհակալություն.