zoukankan      html  css  js  c++  java
  • 12月15日 session:Ruby on Rails Security Guide//从第3节开始没有学习//关于find_by 和where的区别用法思考。

    http://guides.rubyonrails.org/security.html#user-management

    2.session笔记见13日的随笔。

     http://www.cnblogs.com/chentianwei/p/8031913.html

    3.Cross-site Request Forgery(CSRF)这之后没看。 




    再看find_by 和 where

    我再做6-1购物车练习作业,设计一个功能:

          点击加入购物车,可以增加cart_item的属性:quantity,但不会增加cart_item

    可以使用find_by(product_id: product),但不能使用where(product_id: product)分析过程:

    首先,对比sql语句。在控制台输入cart = Cart.last 最后得到不同的结果。


    这是 用 cart.cart_items.find_by(product_id:4)

      CartItem Load (0.1ms)  SELECT  "cart_items".* FROM "cart_items" WHERE "cart_items"."cart_id" = ? AND "cart_items"."product_id" = ? LIMIT ?  [["cart_id", 5], ["product_id", 4], ["LIMIT", 1]]
     => #<CartItem id: 26, cart_id: 5, product_id: 4, quantity: 1, created_at: "2017-12-15 13:20:33", updated_at: "2017-12-15 13:20:33">


    这是 用cart.cart_items.where(product_id:4)

       CartItem Load (0.2ms)  SELECT "cart_items".* FROM "cart_items" WHERE "cart_items"."cart_id" = ? AND "cart_items"."product_id" = ?  [["cart_id", 5], ["product_id", 4]]
     => #<ActiveRecord::AssociationRelation [#<CartItem id: 26, cart_id: 5, product_id: 4, quantity: 1, created_at: "2017-12-15 13:20:33", updated_at: "2017-12-15 13:20:33">]>


    我发现 区别:见上面标黄的的代码。

    然后,我查看api文档。where的定义是return a new relation.而find_by的定义是finds the first record matching the specified conditions.

    我在这个过程中反复试验,当使用where的时候在下一行代码ci.quantity +=1 提示❌,(没有quantity这个method),而find_by可以继续执行ci.quantity +=1 ,这就证明了where返回的是新的一个关系,而find_by是返回的符合条件的第一条记录。

    最后,我记录这次思考,✌️。 

  • 相关阅读:
    第一次冲刺团队绩效评估
    各组意见汇总及我组改进方案
    对其他小组的评价和建议
    检查第一组博客状况
    第一次冲刺-站立会议10
    第一次冲刺-站立会议09
    第一次冲刺-站立会议08
    敏捷软件需求:团队、项目群与企业级的精益需求实践 阅读笔记二
    敏捷软件需求:团队、项目群与企业级的精益需求实践 阅读笔记一
    问题账户需求分析
  • 原文地址:https://www.cnblogs.com/chentianwei/p/8041364.html
Copyright © 2011-2022 走看看