klasarn
klasarn

Reputation: 129

Rails 5: Add loop to create method and increment by 1 each time

I want to add an order_number to my reservations. Now everytime an order gets created I want to change the value of the order_number.

I tried @reservation.order_number = 1000 and then @reservation.order_number += 1, but I soon realised that this doesn't make any sense.

Here is my create method from my reservations controller:

def create
    service = Service.find(params[:service_id])

    if current_user.admin?
      flash[:alert] = "Du kannst nicht dein eigenes Angebot kaufen"
    elsif current_user.stripe_id.blank?
      flash[:alert] = "Füge eine Zahlungsmehtode hinzu"
      return redirect_to payment_method_path
    else
      @reservation = current_user.reservations.build
      @reservation.service = service
      @reservation.price = service.price
      @reservation.order_number = 1000

      if @reservation.Bearbeitung!
        flash[:notice] = "Ihre Anfrage wurde erfolgreich versendet"
        ReservationMailer.confirm_email_to_guest(@reservation.user, service).deliver
        confirm_sms(service, @reservation)
      else
        charge(service, @reservation)
      end

    end
    redirect_to submit_reservation_path(@reservation)
  end

Upvotes: 0

Views: 389

Answers (1)

roshiend
roshiend

Reputation: 574

in your model you can do something like,

before_save :add_order_number

private 
  def add_order_number
    default_order_number = 1000
    previous_order = Order.last
      if previous_order
        puts "last order_number was #{previous_order.order_number}"
        self.order_number = previous_order.order_number + 1
      else
        puts  "there was no last number, setting order number to default_order_number"
        self.order_number = default_order_number
      end
  end

Upvotes: 1

Related Questions