【122日目】【1日20分のRailsチュートリアル】【第10章】アカウントの有効化トークンやダイジェストを作成する処理を追加する
今日は「10.1.1 AccountActivationsリソース」のアカウントの有効化について考えるところから。
10.1.1 AccountActivationsリソース
ユーザーが新しい登録を完了するためには必ずアカウントの有効化が必要になるのですから、有効化トークンや有効化ダイジェストはユーザーオブジェクトが作成される前に作成しておく必要があります。
before_create
コールバックを使うとユーザーオブジェクト作成前に有効化トークンや有効化ダイジェストを作成できるそう。
Userモデルに有効化トークンとダイジェストを作成する処理を追加する。
ついでにメールアドレスを小文字に変換する処理もちょっと書き換える。
app/models/user.rb
class User < ActiveRecord::Base attr_accessor :remember_token, :activation_token before_save :downcase_email before_create :create_activation_digest : private # メールアドレスをすべて小文字にする def downcase_email self.email = email.downcase end # 有効化トークンとダイジェストを作成および代入する def create_activation_digest self.activation_token = User.new_token self.activation_digest = User.digest(activation_token) end end
先に進む前に、サンプルデータとフィクスチャも更新し、テスト時のサンプルとユーザーを事前に有効化しておきましょう (リスト10.4とリスト10.5)。
サンプルデータ更新。
db/seeds.rb
User.create!(name: "Example User", : activated: true, activated_at: Time.zone.now) 99.times do |n| : activated: true, activated_at: Time.zone.now) end
フィクスチャの各ユーザーに下記コードを追加。
test/fixtures/users.yml
: activated: true activated_at: <%= Time.zone.now %> :
いつものようにデータベースを初期化して、サンプルデータを再度生成し直し、リスト10.4の変更を反映します。
下記を実行してサンプルデータを再度生成し直しました。
$ bundle exec rake db:migrate:reset $ bundle exec rake db:seed
これでようやく準備的なものは終わりなのかな…??
今日の学習時間は【19分】。
次は「10.1.2 AccountActivationsメイラーメソッド」から。