small medium large xlarge



Activity 1

Create a migration that copies the product price into the line item, and add_product method in the Cart model to capture the price whenever a new line item is created.

Hint: use LineItem.all.each to iterate over all of the existing line items inside your migration.


Activity 2

Add unit tests which add unique products and duplicate products. Note that you will need to modify the fixture to refer to products and carts by name, for example product: ruby.

Hint: add two tests to test/unit/cart_test.rb; in one test create a cart, add two different books to the cart, and then make assertions as to what the cart.line_items.size and cart.total_price should be. Make sure to save the LineItems that you create before making these assertions.


Activity 3

Check products and line items for other places where a user friendly error message would be in order.

Hint: what about a price too high or a image_url that is not unique? You also aren’t limited to the validates method as Rails also has a validate method that can enforce any restriction that you can express via code.


Activity 4

Add the ability to delete individual line items from the cart. This will require buttons on each line, and such buttons will need to be linked to the destroy action in the LineItemsController

Hint: the destroy action currently redirects to the line_items_url upon completion. Is this where you want it to go? If you change this, be sure to update your unit test. Also consider adding a :notice. If you do so, make sure that the target view displays this notice.


Page History
  • V11: Krishna Aradhi [over 2 years ago]
  • V9: Sam Ruby [over 2 years ago]
  • V8: Sam Ruby [over 4 years ago]
  • V7: Sam Ruby [over 4 years ago]
  • V6: Sam Ruby [over 4 years ago]
  • V5: Sam Ruby [over 4 years ago]
  • V4: Sam Ruby [over 4 years ago]
  • V3: Andrew de Andrade [about 5 years ago]
  • V2: Andrew de Andrade [about 5 years ago]
  • V1: Andrew de Andrade [about 5 years ago]