У меня был быстрый вопрос, идя в то время, когда вы проходили через Agile Web Development с Rails, что я не смог найти ответ, просматривая веб-сайт. У меня есть два метода:Rails database calls (.save/.destroy)
Этот метод в моем контроллере:
def decrement
@line_item = LineItem.find(params[:id])
@line_item = @line_item.decrement_quantity(@line_item.id)
respond_to do |format|
if @line_item.save
format.html { redirect_to store_url }
format.json { render json: @line_item, status: :created, location: @line_item }
else
format.html { render action: "new" }
format.json { render json: @line_item.errors, status: :unprocessable_entity }
end
end
И это в соответствующей модели:
def decrement_quantity(line_item_id)
current_item = LineItem.find_by_id(line_item_id)
if current_item.quantity > 1
current_item.quantity -= 1
else
current_item.destroy
end
current_item
end
Я знаю, что это не самый эффективный код, но мой вопрос в том, что current_item будет уничтожен в методе модели, то, что возвращает этот метод? (nil?) Является ли current_item как переменная все еще существующей, только объект базы данных был уничтожен? Как метод декремента в контроллере может сохранить объект, который был уничтожен? (Я поставил оператор logger.debut в инструкции if метода контроллера, и кажется, что код всегда проходит там независимо от того, оценил ли метод модели оператор if или else).
Большое спасибо - быстрый вопрос о последующих действиях, если предмет был уничтожен, а что (если что-либо) является командой line_item.save? (не кажется, что есть что-то, что можно сэкономить). – Alex
Вы можете следить за цепочкой вызовов методов, начиная с http://apidock.com/rails/ActiveRecord/Transactions/save, чтобы определить ответ. – Gazler
Получил это - Большое спасибо за вашу помощь Gazler. – Alex