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是返回的符合条件的第一条记录。
最后,我记录这次思考,✌️。