Class.where(id:' 1234')和Class.find_by id:' 1234'的差异

时间:2015-01-22 13:07:49

标签: ruby mongodb ruby-on-rails-4

我刚刚发现.where.find_by之间的细微差别显然.where只返回我正在查找的对象的_id.find_by }返回一个哈希。有人可以解释Rails 4和mongodb中两种方法的区别吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

请阅读documentation on the ActiveRecord Query Interface

  

1从数据库中检索对象

     

从中检索对象   数据库,Active Record提供了几种查找器方法。每个发现者   方法允许您将参数传递给它以执行某些查询   在没有编写原始SQL的数据库上。

     

方法是:

     

...略...

     
      
  • ,其中
  •   
     

以上所有方法都返回ActiveRecord::Relation

的实例

因此调用Class.where(...)的结果是对象的集合。

  

1.1.5 find_by

     

find_by方法找到第一条记录匹配的某些条件。   例如:

Client.find_by first_name: 'Lifo'
# => #<Client id: 1, first_name: "Lifo">   Client.find_by first_name: 'Jon'
# => nil

(强调我的)

因此调用Class.find_by(...)的结果是第一个找到的对象。