2016-07-08 45 views
2

我遇到了Devise Gem的麻煩,我使用默認的可恢復方法,鏈接正在發送。復位值(reset_password_sent_at)被保存在數據庫中,但是當我要記下新密碼,並更新它,給這個錯誤當我想恢復密碼時,Rails設計Gem(未定義方法`to_datetime'爲nil:NilClass)

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' 

調試這個它似乎與reset_password_sent_at是零,當一個問題密碼重置(lib/devise/models/recoverable.rb:94:inclear_reset_password_token)

我試圖將本地時間更改爲UTC存儲,但問題不是這樣。任何建議?

+0

設計當您使用默認的設計方法比你沒有改變色器件現有的代碼。 – Vishal

+0

如果您使用gem「letter_opener」而不是密碼重置電子郵件將不會實際發送 – Vishal

+0

我沒有使用letter_opener。郵件正在發送。 此外,我使用的默認方法,所以我不覆蓋或更改設計的代碼 –

回答

2

我的解決方案是將我的導軌從4.0.2升級到4.2.7。當我運行軟件包安裝並更新gemfile依賴現在正在工作。

升級從(3.5.6)到(4.2.0)

相關問題