麻布十番で働くデータ分析者のブログ

グロースハック、プログラミング、データ分析の色々を発信します

gem 'devise'で名前を実装してみた。

今日は、ちょっと珍しく夕方に更新。

朝から学校の講義は最低限のノートをとって、Rubyのログイン機能の実装をずっとやっていた。

 

Gemのdeviseを使えば、emailとパスワードの認証が一発で実装されるのは知っていたのだけど、名前の実装ができなかった。

 

何よりもnameメソッドはありませんと何度も言われてしまってダメだった。

あと、progateの通りにやったらforメソッドもありませんと言われたので、解決策を午前中は模索し、見つけたのでシェアしたいと思う。

 

'for'メソッドが見つからない。

まず、初めに罠にはまったのは、progateのここ

 

f:id:nimi0370376:20161118184357p:plain

 

名前を実装する際にサニタイザーを定義づけする部分。

forが入っているんだけど、これをどうも読み取ってくれない。

ここは、

f:id:nimi0370376:20161118184602p:plain

 

こうして回避。

.forではなくて、.permitで書き換えてなんとか死なずにすみました。しかし、次で本当にはまった。

 

 

:nameがない

 

f:id:nimi0370376:20161118184749p:plain

 

次は、deviseのviewファイルの中のregistrationの中のnew.html.erbの中のname

つまりは名前を入力するボックスと記憶を行うところなのだけど、ここの:nameを読み取ってくれない。

 

add_indexに:nameを書き加えてもだめ。gem 'devise'のバージョンの書き換えも試しましたが、だめの一点張り。

 

最後は

qiita.com

 

ここをみて解決。

$ bundle exec rails generate migration add_name_to_users name:string

 

を打ち込んで、無事に読み取ってくれた。

 

めでたし。