美文网首页Ruby On Rails
rails中find/find_by/where的区别

rails中find/find_by/where的区别

作者: kamionayuki | 来源:发表于2016-05-22 17:04 被阅读2343次
  • find
    根据id进行查询,像Product.find(3),查询语句是Product Load (0.1ms) SELECT "products".* FROM "products" WHERE "products"."id" = ? LIMIT ? [["id", 3], ["LIMIT", 1]],也可以直接传一个Product的对象,像
product = Product.first
Product.find(product)

find会把传过去的model对象的id进行查询。甚至可以这样:

user = User.last
Product.find(user)

find会把user的id的值进行查询。
find没有查询到结果,会抛出一个ActiveRecord::RecordNotFound异常。

  • find_by
    需要传递一个hash作为参数。像Product.find_by(id:3),查询语句是Product Load (0.1ms) SELECT "products".* FROM "products" WHERE "products"."id" = ? LIMIT ? [["id", 3], ["LIMIT", 1]]。当然也可以查询其它的字段,像Product.find_by(title: 'the yellow book',查询语句是Product Load (0.1ms) SELECT "products".* FROM "products" WHERE "products"."title" = ? LIMIT ? [["title", "the yellow book"], ["LIMIT", 1]]
    find_by没有查询到结果,会返回nil

  • where
    where返回的是一个ActiveRecord_Relation集合,并不是一个model的对象,像product = Product.where("id = 1"),查询后,这样使用product.id是不行的,需要这样prodcut.first.id或者product.take.id

相关文章

  • rails中find/find_by/where的区别

    find根据id进行查询,像Product.find(3),查询语句是Product Load (0.1ms) S...

  • rails中find和find_by区别

    在rails中 find如果找不到数据,会抛出异常;而find_by则会返回nil。 所以如果需要利用返回值nil...

  • 购物网 5.8作业

    找到 find_by 与 find 的区别 两者都是finder, 这解释一下find_by, Finds the...

  • 用户密码加密

    1、安装gem 使用的是rails内置的gem,不可逆的hash算法加密 2、验证的时候不能用find_by(na...

  • 2018-09-05(rails 开发记录)

    为什么find不行而find_by可以 @order = Order.find(params[:id])/@ord...

  • find 和 find_by

    find find(*args) 仅按照栏位id查找符合匹配值的记录 若没找到,返回 RecordNotFound...

  • RailsCasts

    1.caching with instance variables2.dynamic find_by method...

  • [Rails] find 和 where 的差異

    前言今天來探討一下find及where的差異,這邊建立了一個Model Todo 來做測試實際測試單筆比較 可以看...

  • RailsCasts #002 dynamic find_by

    把RailsCasts中的视频讲的内容总结成文章,每个视频对应一片文章,希望可以帮助到那些想要学习RailsCas...

  • Rails: Where Statement

    time where(completed_at: 1.week.ago .. Time.current) wher...

网友评论

    本文标题:rails中find/find_by/where的区别

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