11.1 AccountActivationsリソース
11.1.1 AccountActivationsコントローラ
ルーティングで使用するresouces
はonly
で限定的に使用できる
resources :account_activations, only: [:edit]
演習
表 11.2の名前付きルートでは、_pathではなく_urlを使うように記してあります。なぜでしょうか? 考えてみましょう。ヒント: 私達はこれからメールで名前付きルートを使います。
サーバーの外からアクセスできるパス(URL)でないと行けないのでフルパスである必要がある
_path
が返すルート相対パスや、相対パスでは駄目
pathヘルパー(_path)が返すのは相対パス?絶対パス?: Railsチュートリアル備忘録 - Qiita
11.1.2 AccountActivationのデータモデル
3つの属性をUserモデルに追加
$ rails generate migration add_activation_to_users \
> activation_digest:string activated:boolean activated_at:datetime
activated
は初期値でfalse
付与
class AddActivationToUsers < ActiveRecord::Migration[6.0]
def change
add_column :users, :activation_digest, :string
add_column :users, :activated, :boolean, default: false # 初期値false
add_column :users, :activated_at, :datetime
end
end
before_create
で事前にactivation_token
とactivation_digest
属性を付与するメソッドを呼び出す
before_create :create_activation_digest
def create_activation_digest
self.activation_token = User.new_token
self.activation_digest = User.digest(activation_token)
end
activation_token
はモデルにない属性なので
attr_accessor
が必要
attr_accessor :remember_token, :activation_token # 一行で書ける
attr_accessorが必要な理由と、不要な理由(Railsさんありがとう): Railsチュートリアル備忘録 - 9章 - Qiita
サンプルユーザとfixtureを有効化しておく
$ rails test
> (GREEN)