Я хочу разрешить обновление, но хочу исключить обновление определенного столбца и создать собственный метод обновления.
Вопрос: Есть ли способ определить мой заказ?параметры, но исключить конкретный столбец?Или даже разделить столбцы на методы?
def order_params
params.require(:order).permit(:name, :email, :image, :video, :description)
end
Моя проблема в том, что у меня есть полосовой сбор в моем методе обновления, поэтому, когда я просто обновляю заказы "order_status", клиент получает плату.
У меня есть столбец "order_status", который можно изменить с помощью enum 1,2,3, и я хочу, чтобы в нем не происходило обновление, поэтому плата не взимается.
Я создал:
def order_status
params.permit(:order_status)
end
Но поскольку в оригинальном order_params есть: orders, статус заказа по-прежнему включается.
У меня есть enum as, «создано», «заряжено» и «отменено».Продавец может отменить заказ с помощью:
<%= form_for @order, remote: true do |f| %>
<%= f.hidden_field :order_status, value: "cancelled" %>
<%= f.button type:'submit', class: "btn btn-danger", onclick: "refreshPage()" %>
<% end %>
Что я должен сделать, чтобы это обновление "order_status" было выполнено само по себе и вне оригинального метода обновления, чтобы клиенты не получали оплату?
Обновление:
Я нашел способ просто создать свой собственный метод для зарядки и вынуть заряд из метода обновления со всеми параметрами ..
def charge_update
respond_to do |format|
@amount = (@order.order_price).to_i * 100
@amount_seller = (@order.order_price).to_i * 75
if @order.update(params[:tracking_number])
if user_signed_in?
charge = Stripe::Charge.create({
:amount => (@order.order_price).to_i * 100,
:description => 'Rails Stripe customer',
:currency => 'usd',
:customer => @order.stripe_customer_token,
:destination => {
:amount => @amount_seller ,
:account => (@order.seller.stripe_token),
}
})
@order.order_status = "charged"
format.html { redirect_to @order, notice: 'Order was successfully uploaded.' }
format.json { render :show, status: :ok, location: @order }
else
format.html { render :edit }
format.json { render json: @order.errors, status: :unprocessable_entity }
end
end
end
end
Клиент получает плату только после отправки заказа.
Но как я могу указать сам статус параметров?
Например, я хочу создать метод для order_status, но только для случая, когда order_status = "отменен" ... и затем создать еще 2 метода для двух других возможных состояний '?
Так что, когда я / продавец отменяет заказ, я могу создать собственное сообщение,отправлять электронные письма и т. д. и делать то же самое для «заряженных» и «созданных» ....