Цель: Проверить, обновлена ли уже запись, и разрешить или запретить обновление записи, если она уже была.
Это в случае, если покупательна странице, которая не имеет обновленной информации и пытается отменить заказ, как только он уже выполнен.
У меня есть следующий код, который работает, но также не работает правильно:
private
def prevent_order_update
@order = Order.find(params[:id])
if ( @order.order_status[2] || @order.order_status[3] )
redirect_to @order, notice: "Your request status for Order:#{@order.id} has already been updated."
end
end
с:
before_action :prevent_order_update, :only => [:update]
Это работает, но также «работает», если :order_status
равно 1
, что не должно.
Я хочу, чтобы в обновлении был только блок, ЕСЛИ статус заказа не равен 1
.
Статус заказа соответствует номеру модели 1,2,3.
Iтакже пытались использовать:
if ( @order.order_status[2] || @order.order_status[3] ) && @order.order_status_previously_changed?
, который полностью блокирует prevent_order_update
от совместной работы.
И:
( @order.order_status[2] || @order.order_status[3] ) != @order.order_status[1]
, который затем блокирует мой метод обновления все вместе и по-прежнему выдает уведомление о методе prevent_order_update
при заказестатус 1