Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class BasketController
- #По правилам Сэнди Мэц лучше разбить этот метод на методы поменьше
- def add_to_basket
- #Лучше использовать Item.find_by(title: params[:item_title])
- item = Item.find_by_title(params[:item_title])
- basket = $basket #Тут лучше использовать классовую переменную вместо глобальной, чтобы соблюдать инкапсуляцию.
- basket.add_item(item)
- if basket.count_items > 10
- #После этой ошибки, судя по всему, нужно выйти из этого метода с ошибкой
- basket.error_messages.add("Слишком много товаров в корзине")
- end
- #этот код лучше перенести в модель, как метод, который возврщает итоговую стоимость
- total = 0
- basket.items.each do |basket_item|
- total += basket_item.price
- end
- session[:basket_total] = total
- #Если переписать это через ActiveRecord, то будет понятнее, что делает этот код.
- #Было бы лучше создать связь has_many между Basker и Item, чтобы можно было
- #делать это через Active record.
- query = "INSERT INTO basket_items (basket_id, item_title, basket_type) VALUES '" +
- (:basket=>basket_id.to_s) + #место для потенциальной sql-инъекции
- "', '" + params[:item_title] + "', 3)"
- #Неиспользуемая переменная results
- results = ActiveRecord::Base.connection.execute(query)
- Basket.add_free_delivery(basket)
- #Подобные сообщения лучше хранить во views и @item не был объявлен
- return "<h1>Добавлен товар в корзину: #{@item.title}</h1>"
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement