2013-04-21 35 views
1

當我做無VS RecordNotFound一個失敗的查詢

User.find_by_username('some_user') 

,也未能找到上述查詢返回零用戶。但是,

User.find(1) 

如果無法找到用戶,則會拋出ActiveRecord :: RecordNotFound錯誤。鐵軌指南說這應該發生,但並不能解釋爲什麼。這是我的問題,爲什麼有兩種不同的行爲?謝謝!

+0

爲了一致,請使用find_by_id – apneadiving 2013-04-21 21:17:31

回答

2

ActiveRecord :: RecordNotFound僅當沒有找到給定id(s)的記錄時纔會引發。

如果你不想例外通過ID進行搜索時,您可以使用:

User.find_by_id('foo') 

的區別,在我看來:

  1. User.find:讓我的用戶。
  2. User.find_by_foo('foo'):是否有用戶使用foo == foo?

第一個(1)假設您的記錄存在,所以失敗應該引發異常。

第二個(2)假定您想查詢您的記錄的存在,所以缺少記錄結果爲零。