ruby-on-rails – find_by_id(params [:subject_id])vs where where(:id => params [:subject_id]).first

我是铁杆新手.只是想知道哪个是更好的方法,如果找不到subject_id,将返回nil:
@subject = Subject.find_by_id(params[:subject_id])

要么

@subject = Subject.where(:id => params[:subject_id]).first

谢谢.

解决方法

它们都生成相同的sql语句:
1.9.3p194 :003 > Example.find_by_id(9)
  Example Load (0.3ms)  SELECT "examples".* FROM "examples" WHERE "examples"."id" = 9 LIMIT 1
nil
1.9.3p194 :004 > Example.where(:id => 9).first
  Example Load (0.3ms)  SELECT "examples".* FROM "examples" WHERE "examples"."id" = 9 LIMIT 1
nil

因此,它们在数据库中具有相同的性能特征. find_by _ * _与where的Rails代码可能略有不同,但我认为与查询时间相比,这可以忽略不计.

编辑:鉴于Ryan Bigg’s comment below,我必须建议第二种形式的向前兼容性.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...