ぞえの技術めも

Ruby on Rails勉強中

【121日目】【1日20分のRailsチュートリアル】【第10章】アカウント有効化のためにUserモデルに属性を追加する

Ruby on Railsチュートリアル(第3版)

今日は「10.1.1 AccountActivationsリソース」のresources行を追加するところから。

10.1.1 AccountActivationsリソース

有効化メールでは以下の形式のURLを使用します。

edit_account_activation_url(activation_token, ...)

これは、editアクションへの名前付きルートが必要になるということです。そのためのresources行を追加します (リスト10.1)。

ほぅ…そうなのか。。。

よく分かってないけど下記を追加。

config/routes.rb

  resources :account_activations, only: [:edit]

続いて、一意の有効化トークンがユーザー有効化に必要です。

パスワードのときと同じように有効化トークンを使えばいいってことかな。。。

以下のマイグレーションコマンドラインで実行して図10.1のデータモデルを追加すると、3つの属性が新しく追加されます。

  • activation_digest
  • activated
  • activated_at

の3つの属性を追加。

$ rails generate migration add_activation_to_users activation_digest:string activated:boolean activated_at:datetime
      invoke  active_record
      create    db/migrate/20170313024742_add_activation_to_users.rb

admin 属性 (リスト9.50) の時と同様に、activated属性のデフォルトの論理値をfalseにします (リスト10.2)。

さっき生成したファイルを下記のように修正してマイグレーション実行。

db/migrate/[timestamp]_add_activation_to_users.rb

    add_column :users, :activated, :boolean, default: false
$ bundle exec rake db:migrate
== 20170313024742 AddActivationToUsers: migrating =============================
-- add_column(:users, :activation_digest, :string)
   -> 0.0006s
-- add_column(:users, :activated, :boolean, {:default=>false})
   -> 0.0035s
-- add_column(:users, :activated_at, :datetime)
   -> 0.0004s
== 20170313024742 AddActivationToUsers: migrated (0.0049s) ====================

まだ中途半端だけど今日はここまで。

今日の学習時間は【20分】

次は「10.1.1 AccountActivationsリソース」のアカウントの有効化について考えるとこから。