У меня есть поле бронирований в CustomerType, но для одного поля внутри BookingType мне нужен не только объект AR, но и код предложения. Моя первая идея состояла в том, чтобы просто украсить объект AR, чтобы также знать о коде, но мне интересно, есть ли лучший способ.
Я не хочу снова звонить Заказчику. Может быть, есть что-то похожее на контекст, в который я мог бы добавить данные?
Моя текущая реализация выглядит примерно так:
module Types
class CustomerType < Types::BaseObject
alias customer object
field :bookings, [BookingType]
def bookings
offer_code = customer.offers.first&.code
customer.bookings.map { |booking|
BookingWithOfferCode.new(booking, offer_code)
}
end
end
class BookingType < Type::BaseObject
alias booking object
field :some_field_requiring_the_offer_code, SomeResultType
def some_field_requiring_the_offer_code
offer_code = booking.offer_code
# doing something with the offer code
end
end
end
class BookingWithOfferCode < SimpleDelegator
attr_reader :offer_code
def initialize(booking, offer_code)
super(booking)
@offer_code = offer_code
end
end