Question about Agile Rails

anyone can explain me why in the Agile Depot Tutorial application they
use i.product_id
to find if a product already exist in the cart, because the cart
contains items which each of them reference a product.

I tried i.product_id like in the tutorial
and
i.product.i

all of these 2 notation works , but i find the second s more clean.

Any explanation will be fine

Regards

def add_product(product)
item = @items.find {|i| i.product_id == product.id} //and why not
i.product.id
if item
item.quantity +=1
else
@items << LineItem.for_product(product)
end
@total_price += product.price
end
end

The Crocodile