У меня есть order_id, который больше не генерируется — не могу найти проблемы с моим методом создания

#ruby #ruby-on-rails-5

#ruby #ruby-on-rails-5

Вопрос:

Я создаю сайт электронной коммерции на rails (я каким-то образом убедил себя, что это хорошая задача, ха-ха), и теперь у меня возникла проблема, когда кнопка «редактировать / подтвердить заказ», которая появится, как только пользователь нажмет «добавить в корзину», больше не появляется, и когда я использую ее raiseпоказывает, что order_id больше не сохраняется. Я не могу найти проблемы с моим методом создания, почему это так

 def create
    if params[:order_sauce][:order_id].blank?
      order = Order.create(state: 'pending')
      session[:order_id] = order.id
      order_sauce = OrderSauce.new(order_sauce_params)
      order_sauce.order = order
      order_sauce.save
    else
      OrderSauce.create(order_sauce_params)
    end
   redirect_back(fallback_location: order_sauces_path, notice: "succesfully added to cart")

  end

def order_sauce_params
    params.require(:order_sauce).permit(:sauce_id, :quantity, :order_id)
  end
 

Похоже, что order_id больше не генерируется, очевидно по;

 <% if session[:order_id] %>
        <%= link_to 'Edit/Confirm Order', edit_order_path(session[:order_id]), class: "checkout" %>
        <% end %>
 

больше ничего не возвращает

Комментарии:

1. Некоторые мысли: работает ли order = Order.create(состояние: ‘ожидание’)? Если нет (и это был мой код) Я бы проверил, изменились ли проверки для Order в последнее время. Вы что-нибудь изменили в том, как работают сеансы / файлы cookie в последнее время? Раздел else в def create не установлен session[:order_id] , может ли это быть проблемой?

2. Большое тебе спасибо, Бен, это была проблема с моими проверками! Мне нужно указать проверки, используя on: :updates , как указано в simply validates :variable, presence: true 🙂 Спасибо за помощь!