manatee-itの備忘ログ

プログラム初心者のブログ。ruby on railsでWebサービスを作成中。(仕事が忙しくなかななか進まず) つまずいた所をなんでも記録。 環境:Ruby2.1 + Rails4.1.1 + Passenger + CentOS6.4(Apache + sqlite/MySQL)

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