デバイスで #registerable をオフにして、コンソールとシード データを介してユーザーを登録しようとしていますが、サインインに問題があります。
- コンソールからユーザーを作成しました: User.create!(email: 'example@example.com', password: 'password', username: 'username')
- 検証に合格し、データベースに保存されます
- メール: user@example.com とパスワード: password を入力しても、このユーザーで (Web サイトのフォームから) サインインできません
ただし、これはコンソールでのパスワードです。
u = User.find_by_email('example@example.com') u => #<User id: 6, email: "example@example.com", encrypted_password: "$2a$10$xd0PMJ.qDDu6VtFd6i2EM.bQ0h1rvODyzaqFdzo3Uo4C...", username: "user", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: "2013-09-30 01:25:16", updated_at: "2013-09-30 01:25:16"> u.valid_password? 'password' => true
複数のユーザーを試し、db/seed.rb で作成してみました。繰り返しますが、データベースに入り、すべてが正常に見えます。サインインしないだけです。また、一致するパスワードを使用して password_confirmation フィールドを追加しようとしましたが、サイコロはありません。
ユーザー モデルで :registerable をオンにし、サインアップ ページに移動してユーザーをサインアップすると、そのユーザー (フォームから作成) でログインできます。
私の唯一の考えは、暗号化されたパスワードが生成される方法に何らかの違いがあるということですか? しかし、Web で作成されたユーザーに対して同じ find_by_email/valid_password チェックを実行できるため、それは成り立ちません。
どんな助けでも大歓迎ですか?
編集:
私は Confirmable を使用していません。これが私の Devise 属性です。
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatablen
Edit2 ウェブで作成したアカウントでログインできなくなりました。さらにデバッグを行う必要があります。