Skip to content

Instantly share code, notes, and snippets.

@bDrwx
Forked from Mehonoshin/test.rb
Last active February 12, 2018 20:54
Show Gist options
  • Save bDrwx/2689444e65fd413c1c7154c3a47446b2 to your computer and use it in GitHub Desktop.
Save bDrwx/2689444e65fd413c1c7154c3a47446b2 to your computer and use it in GitHub Desktop.
Тестовое задание №1
# В целом создание корзины магазина неплохо описано в Agile web development
# with Rails. Думаю что концепция CRUID для данного типа приложений выглядит
# более естественно. Так же хорошо вписывается в данную модель создание промежуточной
# сущности между item между корзиой и списком товаров.
# В цело данный метод слишком веоик, не интуитивен и смешивает в кучу все слои MVC.
class BasketController
def add_to_basket
# Предпочтительно оперировать понятием уникального идентификатора id
item = Item.find_by_title(params[:item_title])
# Использование глобальной переменной не желательно
basket = $basket
basket.add_item(item)
# Данный метод не остановит выполнение метода add_to_basket
if basket.count_items > 10
basket.error_messages.add("Слишком много товаров в корзине")
end
total = 0
# Нужно вынести в отдельный метод total_price. Добавление товара в корзину не связанно с подсчетом стоимости.
# не учитывается возможность приобретения нескольких позиций одного типа
basket.items.each do |basket_item|
total += basket_item.price
end
session[:basket_total] = total
#Зачем использовать SQL напрямую и не вызывать методы ActiveRecord
#Это задача Модели
query = "INSERT INTO basket_items (basket_id, item_title, basket_type) VALUES '" +
(:basket=>basket_id.to_s) +
"', '" + params[:item_title] + "', 3)"
results = ActiveRecord::Base.connection.execute(query)
Basket.add_free_delivery(basket)
# Почему не использовать шаблонную систему Rails
# Это задача View
return "<h1>Добавлен товар в корзину: #{@item.title}</h1>"
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment