美文网首页
购物网 购物车开启

购物网 购物车开启

作者: RealAnalysis | 来源:发表于2019-06-06 17:00 被阅读0次

    先开启自己的瞎想...

    添加到购物车后商品页面数量随着变少, 这可在原来的product表格里面加一个栏位去实现. 但购物车呢, 购物车莫非也是开个model? 那要有哪些栏位呢? 名字,数量, 价格等数据都是跟原来的product model一致的, 而且又如何关联两张表格?

    话说...真的会是开个model咩?还是引进新概念来解决这个操作?

    再一想, 如果真的开新model解决这个问题...那product以及"购物车"两张表格将有那么多重复的部分...会不会... 其实背后没有走"数据"的移动, 不用把数据从"product表格"移动到"购物车表格"中? 直接建一个controller, 从product表格里面抓数据出来, 显示成"购物车"页面就可以了?!

    教程温和的开场 先讲"加入购物车"按钮的写法

    居然出现了"自定义的route" 这是新知识点啊! 还有这自定义的route对应的action定义应该是放在跟new/edit/update等等一样的层级去定义的. 原来这些都是action啊...

    貌似自定义route需要先在controller里面定义好action后, 起的action名字直接用到view代码里XXX_path部分,最后也用在routes自定义的代码里.

    而且routes的代码居然不是新招, 就用member do搞定啊!!! 那不就跟之前的publish/hide一个路数吗?! 原来之前已经默默的实作了自定义routes? 就是我一头雾水的publish/hide那里!

    还真的要建cart model啊...那一开始怎么关联这两张数据表?!

    数据还真的要"移动"到另一张表格里? "数据的转移"应该是通过关联表格实现的吧? 这个"add_to_cart"的action要怎么定义啊?

    数据搬移...是不是用..."=" 就解决了? 想到之前的 @current_user.job = @job之类的代码...

    如何设计model

    一直在考虑如何写关联... has_many关联的话, 如何照顾到一堆的price啦 quantity啦 title啦, 原来教程里居然是把这些项目一并打包成一块, 给个名字叫 CartItme, 然后直接 has_many CartItems这样的思路!

    所以每个CartItem里面有多个数据包装在其中...这又要如何处理?

    当当当当!!! 居然又写个CartItme的表格来处理!!! 哦哦哦!!! 这就是model中套的model哦哦哦!!!

    如何设计关联

    原来...新建立两个model, 加上之前的product model那么就有个三边关系...就可以建立表格间的关联了?! Cart的model与CartItem的model间也能关联起来了! 所以"关联"的设计关键是在"构建三边关系"咩?!

    还有, 这次建完model后, 要手动去加自己想要的栏位啦! 刚刚建立的表格里, 默认栏位只有 timestamps 唯一一个栏位而已 😂

    然后cart里的关联代码不是

    has_many :products
    

    而是

    has_many :products, through: :cart_items, source: :product
    

    尾巴的细节才是重点...通过"cart_items"这个地方就是连接三边关系的地方...Orz


    而cart_item里面的关联代码也不是

      belongs_to :cart
      has_many  :quantities
    

    而是

    belongs_to :cart
    belongs_to :product
    

    居然...不写细节的吗?!! Cart item里面包含哪些具体项目不写的咩?!! 哦哦哦!!! 这里是表格间的关联哦! 当然写的都是表格间的关系, 才不能细节到每个项目呢!!!

    所以具体的细节项目, 都已经手动加到了cart_item的表格生成的migration文档里了对吧, 哦哦哦~

    有个新感悟, 原来关联的都是表格, 难怪都是单数呢! 因为rails g model的时候, 后边名词都是单数的, 所以这里也要用单数哦哦哦!


    话说, 不去product.rb把它关联进来咩? 应该在后面的教程要关联...不对, 等等...应该是在

    has_many :products, through: :cart_items, source: :product
    

    这段代码的后面那两段里面, 就已经关联上了product表格的意思!!! 哦哦哦!!!

    最后, 如何设计action的定义

    我一开始跑product controller去了...教程啪啪打脸, 而且还是一连串打脸...大哥你谁啊?!

    相关文章

      网友评论

          本文标题:购物网 购物车开启

          本文链接:https://www.haomeiwen.com/subject/rzquxctx.html