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:migrate
heroku 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
'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
Danke, ich habe die Methode hinzugefügt (bei dieser Methode habe ich "Fake Posts" gesetzt und ihre Buchungszeit geändert). – OhDaeSu