activation_tokenが設定されない場合がある

sorcery (0.8.2)

Railsで認証系ライブラリといえば、Deviseだけど自分は微妙な印象。
Deviseってやっぱ何やってるかよくわからんしviewのgenerateしたところでカスタマイズするのすごくしんどい感じがあるし、
railsのgeneratorが既に充実しているので他のライブラリまでのgenratorを覚える気になれないし、
Railsのアップデートですごく足引っ張りそうというなどの理由からDeviseは使っていなくて、長く続きそうなアプリの時はシンプルなSorceryを使ってる。

それで、そのSorceryを使ってTwitterからのユーザ登録機能を実装していた時あって、
Twitter経由からのユーザ」にアクティベーションで使うactivation_token項目が設定されてなかった。
(Twitterからの登録だと、TwitterからEmailを取得できないので、手入力したEmailにアクティベーションしたい。)

どうしてactivation_tokenとかの項目が設定されないのかSorceryのソースを見ると、
パスワードが空だとtokenを作る、setup_activationメソッドが実行されないようになってた。
なので、アクティベーションメールを送る直前に、tokenを作るメソッドを走らせておくようにした。

self.send(:setup_activation) if activation_token.nil?

このあと滅茶苦茶テスト書いた。