about 1 year ago

这是 购物网站 第二周复盘笔记的疑问记录:关于 find 与 find_by 的疑问。

在实作 购物网站 5-4 Step 2 : 加入购物车代码 中出现这样一段代码:

app/controllers/application_controller.rb
  private

  def find_cart
    cart = Cart.find_by(id: session[:cart_id])
    if cart.blank?
      cart = Cart.create
    end
    session[:cart_id] = cart.id
    return cart
  end

find 与 find_by 有什么区别?

find

根据id进行查询,像 Cart.find(id) ,如果不知道id是什么,可以在 rails console 里查询(Cart.all
若输入的id不存在,会出现报错信息:ActiveRecord::RecordNotFound:...

find_by

需要传递一个hash作为参数。像 Cart.find_by(id:x)
若输入的id不存在,会出现 nil

参考资料:
← [学习笔记] helper_method是什么? [学习周记] 购物网站 第二周 →
 
comments powered by Disqus