начинающий разработчик Rails Back-end здесь. Первая попытка интегрировать платежный шлюз. Надеюсь, мне удастся все объяснить.
Я создаю платформу рынка бронирования, используя платежный шлюз Mangopay
(необязательно знать эту технологию для моего запроса)
Итак, из того, как Я представил себе процесс бронирования, у меня есть две модели:
Bookings
# Schema
create_table "bookings", force: :cascade do |t|
t.bigint "booking_transaction_id", null: false
...
end
# Model
class Booking < ApplicationRecord
belongs_to :user
has_one :booking_transaction
...
end
Booking_transactions
(отвечает за все лог c между бронированием и платежным шлюзом)
# Schema
create_table "booking_transactions", force: :cascade do |t|
t.bigint "booking_id", null: false
...
end
# Model
class BookingTransaction < ApplicationRecord
belongs_to :booking
...
end
Затем у меня есть контроллер, в котором я хочу создать booking
. Но для бронирования нужен booking_transaction
, верно? Я начал писать что-то подобное в своем контроллере:
def create
booking = current_user.bookings.create!(
)
end
Но, конечно, я получаю NotNullViolation
, потому что для создания бронирования требуется booking_transaction_id
. Так что я не уверен, как должен выглядеть процесс.
Заранее благодарим за любую помощь.