购物网 8.2
对『购物明细』的思考
需要"结账时的当下资料信息", 类似"截图"一般的记录... 这是业务相关的需求. 貌似要创建全新的model去记录"现在此刻"的相关资料. 我就开始琢磨, 这跟order model区别何在? 是否直接在order model里面加栏位, 不用新建一个新表格?
而且这起到"截图"一般作用的数据, 要去哪里抓取呢? 因为product会下架之类的, 想用product_id来定位是无法防止未来的数据变动...莫非...新model的功能不是"抓取数据", 而是"存储当下数据"? 不过就算猜对...要如何新建一个"截图般的功能"的model...
首先 新建一个model叫ProductList的
-
我一开始以为需要的是 user_id, prouduct_id(都说了不能用, 还是写了...), price, total price, quantity
-
教程的数据们是 order_id, product_name, product_price, quantity
对比一下发现, 不用user_id
而是order_id
好像更对哦...都是唯一的编码, 但是不同之处是, user_id旗下估计会有很多很多的order_id啊喂! 人家不一定只买一次啊喂!!!
相较于product_id, 用的是不会随便改动的product_name哦. 然后price...都有, 但我没写详细. 我好奇product_price
跟product.price
应该有不同吧? 前者是个"自己命名"的固定的"当下的价格"?
最后, 我多写了一个total price, 其实认真想想, 有price也有quantity...total price不就有了吗? 我又不是第一次发现model的创建很符合MECE原则了...就是 Mutually Exclusive, Collectively Exhaustive
. 底层原则在各个领域都适用啊...
最后...每次创建一个model...请去关联...我已经说累了...
建立购买明细缓存
有这招!!! 果然是要"存储数据"而不是"现抓数据" 我的推理能力还是可以的! 嘚瑟死我了哈哈哈 以至于都想起来Nic助教在之前的周末meetup给我解答时, 夸我理解力超强, 表示他担心我分分钟要超越他哈哈哈哈
虽然嘚瑟...但是缓存要写哪里...seed吗? 缓存代码又有何不同?
居然直接写controller里面哦! 哦吼! 居然是table body部分常常用的手法!!! 这样写居然就能把目前的"当下"信息存进去product_list 然后呢? 这些数据以后变动, 被存到produc_list的数据也不会被影响不会变咩? 如果是那样就太神奇了!
里面的
current_cart.cart_items.each
要理解成 『'本购物车'里的每个'购物项目', which include 商品id以及其商品数量, 每个cart_item都做如下的处理』
就是把购物车里的每个单品相关数据的"当前数据"做成缓存数据, 存入product_list旗下.
新建了model还去定义了controller, 最后当然是view代码了
要写啥前端呢? 瞄了教程, 发现是要有一张"明细生成页面"就动手去写
而且还漏掉了展示total price的代码...而且那代码还有新的写法, 下面截图里我写的是旧的
最后要学到一个新的table的写法, 其实我能用就知识推导出来, 就是太不尝试了, 要勇于尝试啊!!! 看到一行就一个单独的cell就依旧勇敢去写啊! 我只敢写
<tr>
订购人
</tr>
那样写巨丑...应该勇敢的写成如下的样子