[Rails] try method

Nathan Lee
Change or Die!
Published in
2 min readJul 28, 2018

工作接觸到的專案,蠻常看到使用 try 方法的,所以來研究一下。

只要學習 Ruby on Rails 的過程有遇到錯誤訊息,應該都對 NoMethodError: undefined method `XXXXXXX' for nil:NilClass 這類的錯誤不陌生。所以對 nil 問題所造成的錯誤和困擾,我們可以使用 try 來克服。

引用 API dock 的案例來做延伸解釋:

@person # NilClass
=> nil
@person.name # 當 @person 是nil時,會出現錯誤訊息
=> NoMethodError: undefined method `name' for nil:NilClass

搭配 try 使用時情況就變了,不會報錯。

@person.try(:name) # @person 為 nil 則回傳 nil ,而非直接回傳錯誤信息
=> nil

除此之外,try 方法還能搭配 block 一起使用。

@person.try(:find, 1) # @person 為 nil, 搭配 find 則還是回傳 nil
=> nil

使用 try 方法,我們能省去驗證 object 是否存在,或使用 method 時是否有值。

Reference:

--

--