2017-10-18 2 views
0

Ich habe ein Projekt, das ich in Rails gemacht habe, in einen anderen Ordner kopiert. Wenn ich einen neuen Benutzer mit dem Juwel Devise erstellen/registrieren möchte, funktioniert es lokal auf meinem Computer. Allerdings, wenn ich das gleiche auf Heroku tun wollen, geben die Heroku Protokolle mir diese Fehler (500 Internal Server Error und NoMethodError (nicht definierte Methode `id‘ für nil: NilClass) für den Benutzer):Abgeschlossen 500 Interner Server Fehler bei der Benutzeranmeldung mit Devise auf Heroku

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' 

Die Benutzertabelle existiert, aber ich kann keinen Benutzer auf Heroku erstellen.

Was ich bisher getan habe:

  • die Migration die Datenbank mit heroku run rails db:migrateheroku restart -a appname
  • Ich bin auch mit AWS S3 von Amazon für die Büroklammer gem
  • Neustart des Heroku Servers und In diesem Projekt verwende ich dieselben Tasten, die ich auch für zwei andere Projekte verwende. Die anderen beiden Projekte funktionieren gut. (Beispielsweise sind die Schlüssel: AWS-Zugriffsschlüssel, AWS-Region, AWS-Geheimzugriffsschlüssel, Geheimschlüsselbasis). Könnte das das Problem sein?
  • Gelöschte die Versionsnummer der PG-Edelstein in meinem gemfile und Bundle wieder installiert
  • Ähnliche Fragen zu Stackoverflow zeigte, dass das Problem in der E-Mail-Bestätigung nach der Registrierung liegen könnte. Ich habe jedoch keine E-Mail-Bestätigung auf Devise aktiviert.

Das Modell Benutzer Methode in der Fehlermeldung:

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' Das ist, wo Ihr Fehler passiert. Vielleicht können Sie Ihren Modellcode posten, damit wir Ihnen helfen können. – lacostenycoder

+0

Danke, ich habe die Methode hinzugefügt (bei dieser Methode habe ich "Fake Posts" gesetzt und ihre Buchungszeit geändert). – OhDaeSu

Antwort

2

Chancen sind dies das Problem ist:

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

mit ersten = Fpost.where (gepinnt: true) Rückkehr gleich Null. (Haben Sie Objekte Fpost mit dem Benutzer in diesem Stadium?)

Dies würde erklären, Ihre Fehler ‚NoMethodError (nicht definierte Methode` id‘für nil: NilClass):‘ durch diese geworfen:

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

als ID wird auf Null aufgerufen.

+1

Oh mein Gott, das war es, vielen Dank. Ich habe vergessen, meine "Fposts" zu säen, deshalb gab es keine FPosts. 'Heokoka rake db: seed' löste es. – OhDaeSu

1

Haben Sie versucht, rake db auszuführen: wandern? Sie können Migrationen auch über das Web-Dashboard ausführen. Manchmal funktioniert rails db: migrate in heroku nicht. Und haben Sie auch versucht, einen neuen Benutzer über die Konsole zu erstellen?

Verwandte Themen