2016-07-27 2 views
1

とdevise-token-authを使用しています。時間帯を設定するとデビット認証が無効になる

私は私のユーザモデルでこれを行なったし、それがうまく働いた:

before_create :skip_confirmation! 

# Include default devise modules. 
devise :database_authenticatable, :registerable, 
:recoverable, :rememberable, :trackable, :validatable 

を私が自動的に確認されてしまったのアカウントを作成することができました。 他のものについては、application.rbに以下を追加して、アプリケーションのタイムゾーンを変更する必要がありました。

config.time_zone = 'Europe/Berlin' 
config.active_record.default_timezone = 'Europe/Berlin' 

タイムゾーンのものも同様に機能しますが、不明な理由により、ユーザーの作成が停止しました。私は1つを作成してログインしようとすると、このエラーが発生します。私のデータベースで

A confirmation email was sent to your account at '...'. You must follow the instructions in the email before your account can be activated 

をユーザーレコードごとにタイムスタンプ値が(新しいタイムゾーンを使用して)正しく挿入された新しいタイムゾーンを持つアカウントを作成した後。

どうすればこの問題を解決できますか?

答えて

0

私は、何らかの理由で、Deviseが​​テーブルのconfirmed_atフィールドを「ヨーロッパ/ベルリン」タ​​イムゾーンより先に設定していると考えています。したがって、Deviseがconfirmed_atが現在の日付/時刻より前の日付/時刻に設定されているかどうかを確認する場合はfalseを返します。

解決方法:サーバーを再起動してサーバーが更新されているかどうかを確認してください。

UPDATE

私はDevise::Modelsを見に取って、私は次のコードを参照してください。

def skip_confirmation! 
    self.confirmed_at = Time.now.utc 
    end 

    def confirmed? 
    !!confirmed_at 
    end 

これは、基本的にはUTCでのアプリの時間を設定し、後で変換することが最良であると信じて私をリードそれらのような宝石を使用してLocal Time

+0

それは役に立たなかった。私はタイムゾーンとして「ヨーロッパ/ベルリン」も持つサーバー全体を再起動しました。 –

関連する問題