2011-04-19 39 views
2

下面的查询会引发异常:为什么ActiveRecord有这种特质?

User.find(4) 

而下面的查询返回nil:

User.find(:first, :conditions => "id = 4") 

做数据库通常包装返回“零”或“空”等时找不到记录还是他们提出例外?关于添加“第一个”关键字有什么特别之处吗?这是预期的行为还是铁轨魔术失败?

回答

3

想想看这样的:

在第一个例子,你告诉活动记录找到与4的ID的用户表中的记录,并且它必须存在

在第二个例子,你要很长的路,并告诉它“请搜索具有id属性等于4,如果有任何,返回的第一个纪录”。这就是为什么它不会返回任何东西。

较短的方式做,这是使用find_by_id

+0

好,十分感谢。这就说得通了。第一个例子假定记录存在,我们只是查看它。 – 2011-04-19 22:23:35

+1

你错了,我讨厌你。 – 2011-04-19 22:26:53

+0

@Rein:我想知道如何。 – 2011-04-20 02:54:58