2016-07-08 12 views
2

Ich habe Probleme mit Devise Gem, ich benutze die Standard-Methode, die Links werden gesendet. Die Resetwerte (reset_password_sent_at) wird in der Datenbank gespeichert, aber wenn ich das neue Passwort schreiben müssen nach unten und aktualisieren es gibt diesen FehlerRails Devise Gem, (undefinierte Methode `to_datetime 'für nil: NilClass) wenn ich ein Passwort wiederherstellen möchte

NoMethodError (undefined method `to_datetime' for nil:NilClass): 
    activesupport (4.0.2) lib/active_support/core_ext/date_time/calculations.rb:161:in `<=>' 
    activesupport (4.0.2) lib/active_support/core_ext/time/calculations.rb:286:in `compare_with_coercion' 
    activesupport (4.0.2) lib/active_support/time_with_zone.rb:214:in `<=>' 
    activerecord (4.0.2) lib/active_record/attribute_methods/dirty.rb:97:in `==' 
    activerecord (4.0.2) lib/active_record/attribute_methods/dirty.rb:97:in `!=' 
    activerecord (4.0.2) lib/active_record/attribute_methods/dirty.rb:97:in `_field_changed?' 
    activerecord (4.0.2) lib/active_record/attribute_methods/dirty.rb:66:in `write_attribute' 
    activerecord (4.0.2) lib/active_record/attribute_methods/time_zone_conversion.rb:39:in `reset_password_sent_at=' 
    devise (3.5.6) lib/devise/models/recoverable.rb:94:in `clear_reset_password_token' 
    devise (3.5.6) lib/devise/models/recoverable.rb:32:in `block (2 levels) in <module:Recoverable>' 
    activesupport (4.0.2) lib/active_support/callbacks.rb:377:in `_run__1626105923374900797__update__callbacks' 
    activesupport (4.0.2) lib/active_support/callbacks.rb:80:in `run_callbacks' 
    activerecord (4.0.2) lib/active_record/callbacks.rb:310:in `update_record' 
    activerecord (4.0.2) lib/active_record/timestamp.rb:70:in `update_record' 
    activerecord (4.0.2) lib/active_record/persistence.rb:477:in `create_or_update' 
    activerecord (4.0.2) lib/active_record/callbacks.rb:302:in `block in create_or_update' 
    activesupport (4.0.2) lib/active_support/callbacks.rb:393:in `_run__1626105923374900797__save__callbacks' 
    activesupport (4.0.2) lib/active_support/callbacks.rb:80:in `run_callbacks' 
    activerecord (4.0.2) lib/active_record/callbacks.rb:302:in `create_or_update' 
    activerecord (4.0.2) lib/active_record/persistence.rb:106:in `save' 
    activerecord (4.0.2) lib/active_record/validations.rb:51:in `save' 
    activerecord (4.0.2) lib/active_record/attribute_methods/dirty.rb:32:in `save' 
    activerecord (4.0.2) lib/active_record/transactions.rb:270:in `block (2 levels) in save' 
    activerecord (4.0.2) lib/active_record/transactions.rb:326:in `block in with_transaction_returning_status' 
    activerecord (4.0.2) lib/active_record/connection_adapters/abstract/database_statements.rb:202:in `block in transaction' 
    activerecord (4.0.2) lib/active_record/connection_adapters/abstract/database_statements.rb:210:in `within_new_transaction' 
    activerecord (4.0.2) lib/active_record/connection_adapters/abstract/database_statements.rb:202:in `transaction' 
    activerecord (4.0.2) lib/active_record/transactions.rb:209:in `transaction' 
    activerecord (4.0.2) lib/active_record/transactions.rb:323:in `with_transaction_returning_status' 
    activerecord (4.0.2) lib/active_record/transactions.rb:270:in `block in save' 
    activerecord (4.0.2) lib/active_record/transactions.rb:281:in `rollback_active_record_state!' 
    activerecord (4.0.2) lib/active_record/transactions.rb:269:in `save' 
    devise (3.5.6) lib/devise/models/recoverable.rb:48:in `reset_password' 
    devise (3.5.6) lib/devise/models/recoverable.rb:141:in `reset_password_by_token' 
    devise (3.5.6) app/controllers/devise/passwords_controller.rb:32:in `update' 

Debuggen dies seine scheint ein Problem mit der reset_password_sent_at sein null zu sein, wenn Das Passwort wird zurückgesetzt (lib/devise/models/recoverable.rb: 94: inclear_reset_password_token)

Ich habe versucht, meine lokale Zeit in die UTC gespeichert zu ändern, aber das Problem ist nicht das. Irgendein Vorschlag?

+0

Wenn Sie den Standard entwickeln Methoden verwenden, als Sie ändern müssen, um den vorhandenen Code von devise nicht. – Vishal

+0

Wenn Sie Gem "letteropener" als Passwort-Reset verwenden, wird die E-Mail nicht gesendet – Vishal

+0

Ich verwende nicht letter_opener. Die E-Mail wird gesendet. Auch ich verwende die Standardmethoden, also überschreibe ich nicht oder ändere den Code von Gerät –

Antwort

2

Meine Lösung dafür war, meine Schienen von 4.0.2 auf 4.2.7 zu verbessern. Wenn ich das Bundle ausführe, installieren und aktualisieren Sie die gemfile Abhängigkeiten jetzt funktioniert.

Upgrade ersinnen von (3.5.6) bis (4.2.0)

Verwandte Themen