2017-03-06 4 views
0

Ich habe ein Schedule Modell mit aktuellen Enum:Lade mit Streifen nur dann, wenn bestimmte Option ausgewählt

enum delivery_option: { 
     drop_off: 'drop_off', 
     pick_up: 'pick_up' 
    } 

Hier ist die Schedules Controller create Aktion:

(die $ 25 für beide Optionen Gebühren)
  def create 
      @schedule = Schedule.new(schedule_params) 

      amount = 25 * 100 
      customer = Stripe::Customer.create(
       email: params[:stripeEmail], 
       card: params[:stripeToken] 
      ) 

      charge = Stripe::Charge.create(
       customer: customer.id, 
       amount: amount, 
       description: 'Rails Stripe customer', 
       currency: 'usd' 
      ) 
      end 

Wenn Der Benutzer erstellt einen Zeitplan und kann entweder pick_up oder drop_off auswählen.

Ich muss Benutzer für $ 25 nur für pick_up Option berechnen. Wie mache ich das?

+0

Speichern Sie die Option delivery_option in der Tabelle "schedule"? – ashvin

Antwort

1

Wenn Sie für eine bestimmte Option Kunden zu berechnen, dann kann yu Zustand versetzt wie

folgende

Erstellen Sie eine Methode

def create 
    @schedule = Schedule.new(schedule_params) 

    amount = 25 * 100 
    customer = Stripe::Customer.create(
    email: params[:stripeEmail], 
    card: params[:stripeToken] 
) 

    create_charge(customer, amount, 'Rails Stripe customer', 'usd') if schedule_params[:delivery_option] == "pick_up" 
end 

private 

def create_charge(customer, amt, desc, currency) 
    Stripe::Charge.create(
    customer: customer.id, 
    amount: amt, 
    description: desc, 
    currency: currency 
    ) 
end 
0

Es stellte sich heraus einfacher als ich dachte :)

def create 
     @schedule = Schedule.new(schedule_params) 


     if schedule_params[:delivery_option] == "pick_up" 
      amount = 25 * 100 
      customer = Stripe::Customer.create(
       email: params[:stripeEmail], 
       card: params[:stripeToken] 
      ) 

      charge = Stripe::Charge.create(
       customer: customer.id, 
       amount: amount, 
       description: 'Rails Stripe customer', 
       currency: 'usd' 
      ) 
     end 


     if @schedule.save 
      render json: @schedule 
     else 
      render json: @schedule.errors, status: :unprocessable_entity 
     end 
    end 
Verwandte Themen