2015-09-03 46 views
0

我是rails開發新手,並且一直在使用rails控制檯來適應它。當我嘗試通過.find_by_id()查找記錄時,它會拋出一個缺少錯誤的方法。Rails 4 - .find_by_id()給方法缺少錯誤?

看起來好像有活動記錄寶石出了問題,但我跑gem update更新了活動記錄寶石,我仍然得到相同的錯誤...我不確定問題究竟是什麼。

幫助非常感謝!

NoMethodError: undefined method `find_by_id' for #<Class:0x007fdd03515238> 
     from /usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.3/lib/active_record/dynamic_matchers.rb:26:in `method_missing' 
     from (irb):1 
+0

您調用'.find_by_id'的類是否繼承自'ActiveRecord :: Base'? – jasonmklug

+0

它應該是一個內置的rails方法,如'find()'..我將如何檢查它的繼承? – Gcap

+0

查找相關類的文件(可能在'app/models/your_class.rb'中),並確保'class YourClass jasonmklug

回答

3

我相信find_by_id已被棄用,由一列時發現的語法現在find_by(column: value)。對於id,我認爲find方法就是你要找的。 Model.find(x)應返回id = x的記錄,或者如果找不到它,則返回錯誤。但你仍然可以使用find_by(id: x)

+1

確實如此,但'.find_by_id()'仍然可以工作。如果'.find_by_id()'丟失(無論出於何種原因),'.find'可能也會丟失。 – jasonmklug

+1

'find()'不返回錯誤 – Gcap

+0

謝謝,'find_by'在記錄不存在時不返回錯誤,但當記錄找不到時返回第一條記錄... [編輯]:正確使用時find_by(「column_name」:「value」)'不能正常工作,只是在沒有記錄時返回nil! – Gcap

0

您正在查找的方法只是find(id)

+0

'find()'可以工作,但是當沒有記錄時,它會回傳很多錯誤,如果用戶正在查找一條不存在的記錄,可能會導致稍後在生產中出現問題,所以我需要'find_by_id' – Gcap