deviseのメール認証の追加
device のユーザ認証は導入していたが、確認メールの機能は利用していなかったので、追加しました。※メモ程度に記載したので、抜け漏れあるかもしれません。
■deviseのメール認証の追加
(1)confirmableを追加
$ vim remindertv/app/models/user.rb
:
:
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :confirmable
(←confirmableを追加)
:
(2)マイグレーションの追加
$ rails generate migration AddUserConfirmation
invoke active_record
create db/migrate/20150620131801_add_user_confirmation.rb
$ vim db/migrate/20150620131801_add_user_confirmation.rb
:
:
class AddUserConfirmation < ActiveRecord::Migration
def change
change_table(:users) do |t|
t.string :confirmation_token
t.datetime :confirmed_at
t.datetime :confirmation_sent_at
t.string :unconfirmed_email # Only if using reconfirmable
end
add_index :users, :confirmation_token, unique: true
end
end
:
$ rake db:migrate
$ RAILS_ENV=production rake db:migrate
参考:
マイグレーションを利用してConfirmedを追加しようとしたところ、エラーが発生した。
テーブルにカラムが追加されていなかったのが原因。
追加なのに「change_table」で記載していたから、マイグレートが行われていなかった。
undefined local variable or method `confirmed_at'
■メールの設定
$ vim config/environments/development.rb
$ vim config/environments/production.rb
以下を修正
config.action_mailer.default_url_options = { host: '<サイトのURL>`:3000' }
config.action_mailer.default_url_options = { host: '<サイトのURL>' }
以下を追加
config.action_mailer.delivery_method = :sendmail
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.default_options = {from: 'no-reply@example.com'}
→Googleではない。。
■日本語化
以下を日本語化
app/views/devise/mailer/confirmation_instructions.html.erb
app/views/devise/mailer/reset_password_instructions.html.erb
app/views/devise/mailer/unlock_instructions.html.erb
→エラー時のメッセージなど他にもありそう。
その他、画面上のメッセージを日本語に変更
app/views/devise/shared/_links.erb
config/locales/devise.ja.yml (devise.en.ymlをコピーして修正)
config/locales/helpers.ja.yml