I'm writing a #create method within a controller file that subsequently updates multiple different tables.
Once I create a reservation using reservation#create
in Reservation Table, it should update three other tables:
1) quantity_available
and quantity_ordered
in Menus table
2) meal_credits_left
on Account_Summaries table
3) total_number_ordered
on Meals table
My Api::ReservationsController
looks like this:
def create
@user = current_user
user_summary = @user.account_summary
@reservation = Reservation.new(
user_id: params[:reservation][:user_id],
menu_id: params[:reservation][:menu_id],
)
if @reservation.save
menu = @reservation.menu
meal = @reservation.meal
user_summary.update_attributes(
meal_credits_left: user_summary.meal_credits_left - 1
)
menu.update_attributes(
quantity_available: menu.quantity_available -1,
quantity_ordered: menu.quantity_ordered + 1
)
meal.update_attributes(
total_number_ordered: meal.total_number_ordered + 1
)
render :show
else
render json: @reservation.errors.full_messages, status: 422
end
end
How do I set up the route to make sure that I can update those attributes in ReservationsController#create
?
My routes look like this:
resources :account_summaries, only: [:create, :update]
resources :reservations, only: [:index, :create, :update, :destroy]
resources :menus, only: [:index, :update]
resources :meals, only: [:index, :update]