

ユーザ認証にDeviseを使っています。メール認証(:confirmable)を有効化したいのですが、なぜかできません。  
今のところサインアップやログインは全て可能ですが、メール認証だけができません。  
解決方法か解決のヒントだけでも教えていただければ幸いです。

＜やったこと＞  
gemにdeviseを入れる。

[code]

    gem 'devise'
    $ bundle install
    $ bundle exec rails generate devise:install
    
[/code]

送信メール設定

[code]

    <config/environments/development.rb>
    config.action_mailer.default_url_options = { :host => 'localhost:3000' }
    config.action_mailer.delivery_method = :smtp
    
    config.action_mailer.smtp_settings = {
      :address => "smtp.gmail.com",
      :port => 587,
      :user_name => '',
      :password => '',
      :authentication => 'cram_md5',
      :enable_starttls_auto => true
      }
    
[/code]

UserモデルにDeviseのメール認証用コラムを追加

[code]

    <db/migrate/*****_devise_create_users.rb>
    ## Confirmable
    t.string   :confirmation_token
    t.datetime :confirmed_at
    t.datetime :confirmation_sent_at
    t.string   :unconfirmed_email 
    
    $rake db:create
    
[/code]

Userモデルにdeviseメソッドの引数として:confirmableを指定。

[code]

    <app/models/user.rb>
    devise :database_authenticatable, :registerable, :confirmable, :recoverable, :rememberable, :trackable
    
[/code]

routesファイルにdeviseを指定

[code]

    <config/routes.rb>
    devise_for :users
    
[/code]

Sign up画面からユーザー登録するとメールが送信されずにいきなり認証済みでシステム内に入ってしまいます。

認証メールをスキップするskip_confirmation!を検索してもヒットしません。

[code]

    $ grep -r skip_confirmation! * 
    
[/code]

Userのレコードを確認するとメール認証で入るべき項目が全てnilです。

[code]

    [2] pry(main)> User.last
    => #<User id: 13, email: "qimimuneki@hotmail.com", encrypted_password: "...", sign_in_count: 1, current_sign_in_at: "2015-06-10 06:38:43", last_sign_in_at: "2015-06-10 06:38:43", confirmation_token: nil, confirmed_at: nil, confirmation_sent_at: nil, unconfirmed_email: nil, created_at: "2015-06-10 06:38:43", updated_at: "2015-06-10 06:38:43">
    
[/code]

ログを確認するとメールを送信している様子は一切ありません。

[code]

    [no_token] Processing by Users::RegistrationsController#create as HTML
    [no_token]   Parameters: {"utf8"=>"✓", "authenticity_token"=>"iLnOw9NgUzjUHOGmF7X2ejvlfxbjyNqSe4NNBZVbltE=", "user"=>{"name"=>"pozedi", "email"=>"qimimuneki@hotmail.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Sign up"}
    [no_token]    (0.6ms)  BEGIN
    [no_token]   User Exists (0.7ms)  SELECT  1 AS one FROM "users"  WHERE "users"."email" = 'qimimuneki@hotmail.com' LIMIT 1
    [no_token]   User Exists (0.8ms)  SELECT  1 AS one FROM "users"  WHERE ("users"."email" = 'qimimuneki@hotmail.com' AND "users"."deleted_at" IS NULL) LIMIT 1
    [no_token]   User Load (0.9ms)  SELECT  "users".* FROM "users"  WHERE "users"."deleted_at" IS NULL AND "users"."auth_token" = '3TF5yoyxZjJdsKz12d-u'  ORDER BY "users"."id" ASC LIMIT 1
    [no_token]   SQL (0.8ms)  INSERT INTO "users" ("auth_token", "created_at", "email", "encrypted_password", "metadata", "name", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7) RETURNING "id"  [["auth_token", "3TF5yoyxZjJdsKz12d-u"], ["created_at", "2015-06-10 06:38:43.365969"], ["email", "qimimuneki@hotmail.com"], ["encrypted_password", "$2a$10$3GLpAyPdHupojLx2fRF4aO4PxCWLcJ/MTx6n.T3qNOapXd2OQgUIu"], ["metadata", "{}"], ["name", "pozedi"], ["updated_at", "2015-06-10 06:38:43.365969"]]
    [no_token]    (0.9ms)  COMMIT
    [no_token]    (0.6ms)  BEGIN
    [no_token]   SQL (1.0ms)  UPDATE "users" SET "current_sign_in_at" = $1, "current_sign_in_ip" = $2, "last_sign_in_at" = $3, "last_sign_in_ip" = $4, "metadata" = $5, "sign_in_count" = $6, "updated_at" = $7 WHERE "users"."id" = 13  [["current_sign_in_at", "2015-06-10 06:38:43.417435"], ["current_sign_in_ip", "127.0.0.1/32"], ["last_sign_in_at", "2015-06-10 06:38:43.417435"], ["last_sign_in_ip", "127.0.0.1/32"], ["metadata", "{}"], ["sign_in_count", 1], ["updated_at", "2015-06-10 06:38:43.431023"]]
    [no_token]    (1.0ms)  COMMIT
    [no_token] Redirected to http://localhost:3000/users/13
    [no_token] Completed 302 Found in 310ms (ActiveRecord: 7.3ms)
    
[/code]

なぜでしょうか！？


CC BY-SA 3.0
2015-06-10T07:05:50.110
11212
2015-06-11T12:43:43.287
2015-06-10T07:32:04.710
5793
9202
question
ruby-on-rails ruby devise
Deviseのメール認証が有効化されない


送信メールの設定で、Gmailを使う場合Gmail側のセキュリティ設定を下げないと  
メールが送られなかった気がします。  
こちらでは以下の設定でメールは送れている感じです。

プロジェクト作成

[code]

    $ rails new sample
    
[/code]

Gemfile修正

[code]

    gem 'devise'
    
[/code]

ルート用ページなどの用意

[code]

    $ bundle install
    $ rails generate devise:install
    $ rails g controller Pages index
    $ rails g devise User
    
[/code]

development.rb

[code]

    config.action_mailer.default_url_options = {  host: 'localhost', port: 3000 } 
    config.action_mailer.delivery_method = :smtp
    config.action_mailer.smtp_settings = {  
        :address => "smtp.gmail.com", 
        :port => 587,
        :user_name => "メールアドレス",
        :password => "パスワード",
        :authentication => :plain, 
        :enable_starttls_auto => true
    }
    
[/code]

user.rb

[code]

    devise :database_authenticatable, :registerable,
           :recoverable, :confirmable, :rememberable, :trackable, :validatable
    
[/code]

routes.rb

[code]

    devise_for :users
    root 'pages#index'
    
[/code]

devise.rb

[code]

    config.reconfirmable = false
    
[/code]

YYYYMMDDXXXXXXX_devise_create_users.rb

[code]

    t.string   :confirmation_token
    t.datetime :confirmed_at
    t.datetime :confirmation_sent_at
    t.string   :unconfirmed_email
    
[/code]

上記設定して

[code]

    $ rake db:migrate
    $ rails server
    
[/code]

development.rbにしていしたGmailアカウントで  
[安全性の低いアプリを許可](https://www.google.com/settings/security/lesssecureapps)をオンに設定。


CC BY-SA 3.0
2015-06-11T12:14:33.907
11260
2015-06-11T12:43:43.287
2015-06-11T12:43:43.287
5933
5933
11212
answer