2011-06-07 71 views
0

我有一個使用Ancestry的線程化Post。 當其他用戶回覆帖子我得到:rails創建錯誤

就行了:

@post = current_user.posts.new(params[:post]) 

在週二開始POST 「/posts.js」 爲127.0.0.1 07年6月13:50: 19 0300 2011
處理由PostsController#創建 如JS參數:{ 「提交」=> 「後」, 「後」=> { 「體」=> 「

一個

」, 「PARENT_ID」=> 「5」, 「discussion_id」=>「1」}, 「authenticity_token」=>「RUra0Ndv67cgaGshBS5yCJMq5V6WG6OuZiqDbbWP5cc =」, 「utf8」=>「✓」}用戶負載(0.2ms) SELECT「users」。* FROM「users」WHERE (「users」。「id」= 33 )限制1郵政 加載(0.2ms)選擇「posts」。*從 「posts」WHERE(「posts」.user_id = 33) AND(「posts」。「id」= 5)LIMIT 1 Completed 238ms

的ActiveRecord :: RecordNotFound(無法與 ID = 5找到發表[WHERE ( 「職位」 .user_id = 33)]):
應用程序/控制器/ posts_controller.rb:28:在 '創建'

我該如何調試?

回答

0

我第一遍會打開軌道控制檯(在提示符下輸入「軌控制檯」),然後嘗試以下操作:

>> x = Post.find(5) 

如果你發現它檢查該記錄的USER_ID。它確實存在嗎?如果是這樣,那很好知道。

接下來,我將在上面的輸出中使用SQL,並在您使用的任何數據庫中手動運行它。如果您使用的SQLite3你可以這樣做:

>> sqlite3 db/development.sqlite3 

如果存在,那麼它是一個公平一點劃傷你的頭。我懷疑你會發現它不在那裏。

鏈接是否回覆您在視圖中手動創建的帖子?你確定它的構建是否正確 - 這兩個興趣點確實是你想讓它們成爲的?

如果它的構建正確,那麼我會簡單地在你的控制器中使用ruby調試器,並開始單步執行代碼。如果你不熟悉的紅寶石調試器,你可以在你的Gemfile描述得到的寶石,然後,一旦它在你的寶石,你可以添加這行代碼要設置斷點代碼:

require 'ruby-debug'; debugger 

然後,您可以根據需要自由探索。