2017-10-18 25 views
0

我已將在Rails中完成的項目複製到另一個文件夾中。當我想使用Devise gem創建/註冊一個新用戶時,它可以在我的電腦本地工作。然而,當我想要做在Heroku一樣,Heroku的日誌給我的這些錯誤(500內部服務器錯誤和NoMethodError(未定義的方法'身份證」的零:NilClass)用戶):在Heroku上完成用戶註冊時發生500次內部服務器錯誤

2017-10-18T09:13:44.841868+00:00 app[web.1]: D, [2017-10-18T09:13:44.841788 #4] DEBUG -- : [8944a6a0-36d4-4f3a-b4e2-967d5273ae3c] (1.2ms) ROLLBACK 
2017-10-18T09:13:44.844378+00:00 app[web.1]: I, [2017-10-18T09:13:44.844294 #4] INFO -- : [8944a6a0-36d4-4f3a-b4e2-967d5273ae3c] Completed 500 Internal Server Error in 1109ms (ActiveRecord: 122.8ms) 
2017-10-18T09:13:44.845813+00:00 app[web.1]: F, [2017-10-18T09:13:44.845733 #4] FATAL -- : [8944a6a0-36d4-4f3a-b4e2-967d5273ae3c] 
2017-10-18T09:13:44.845955+00:00 app[web.1]: F, [2017-10-18T09:13:44.845867 #4] FATAL -- : [8944a6a0-36d4-4f3a-b4e2-967d5273ae3c] NoMethodError (undefined method `id' for nil:NilClass): 
2017-10-18T09:13:44.846016+00:00 app[web.1]: F, [2017-10-18T09:13:44.845935 #4] FATAL -- : [8944a6a0-36d4-4f3a-b4e2-967d5273ae3c] 
2017-10-18T09:13:44.846141+00:00 app[web.1]: F, [2017-10-18T09:13:44.846063 #4] FATAL -- : [8944a6a0-36d4-4f3a-b4e2-967d5273ae3c] app/models/user.rb:150:in `set_pinned_posts' 
2017-10-18T09:13:44.846302+00:00 app[web.1]: F, [2017-10-18T09:13:44.846146 #4] FATAL -- : [8944a6a0-36d4-4f3a-b4e2-967d5273ae3c] app/controllers/users/registrations_controller.rb:3:in `create' 

的用戶表存在,但是我無法在Heroku上創建用戶。

什麼我迄今所做的:

  • 遷移與heroku run rails db:migrate
  • 數據庫重新啓動的Heroku服務器heroku restart -a appname
  • 我還使用AWS S3亞馬遜的回形針創業板在這個項目中,我使用了我也用於其他兩個項目的相同鍵。另外兩個項目工作得很好。 (例如,密鑰是:AWS訪問密鑰,AWS區域,AWS祕密訪問密鑰,密鑰基礎)。這可能是問題嗎?
  • 刪除了我的gemfile中的pg gem的版本號,並再次安裝了捆綁軟件
  • Stackoverflow上的類似問題表明問題可能在於註冊後的電子郵件確認。但是,我沒有在Devise上激活電子郵件確認。

錯誤消息的用戶模型的方法:

class User < ApplicationRecord 
    after_create :set_pinned_posts 

    ... 

    def set_pinned_posts 
    Fpost.where(pinned: true).all.each do |post| 
     self.randomized_fposts.where(fpost_id: post.id).each do |post| 
     post.set_faketime_for_pinnedposts 
     end 
    end 

    first = Fpost.where(pinned: true).first 
    last = Fpost.where(pinned: true).last 

    self.randomized_fposts.where(fpost_id: first.id).update_all(fake_time: 1.days.ago) 
    self.randomized_fposts.where(fpost_id: last.id).update_all(fake_time: 30.days.ago) 
    end 
end 
+0

'app/models/user.rb:150:in set_pinned_posts' 這就是您的錯誤發生的地方。也許發佈您的模型代碼,以便我們可以幫助? – lacostenycoder

+0

謝謝,我已經添加了方法(在此方法中,我設置了「虛假帖子」來固定並更改其發佈時間)。 – OhDaeSu

回答

2

可能這是問題:

first = Fpost.where(pinned: true).first 
last = Fpost.where(pinned: true).last 

與第一= Fpost.where(固定:真)返回零。 (你有沒有在這個階段連接到用戶的任何Fpost對象?)

這可以解釋你的錯誤「NoMethodError(未定義的方法'身份證」的零:NilClass):」被拋出此:

.... .where(fpost_id: first.id) ... 

由於id在nil上被調用。

+1

噢,我的天啊,就是這樣,非常感謝。我已經忘記種下我的「Fposts」,因此沒有FPosts.'heroku運行rake db:seed'解決了它。 – OhDaeSu

1

你嘗試運行耙分貝:遷移?您也可以通過Web儀表板運行遷移。有時rails rails:migrate在heroku中不起作用。你是否也嘗試通過控制檯創建一個新用戶?

相關問題