devise導入してユーザ登録時にemailとpassword以外の項目を追加するところまで
AndroidのContentProviderよりも実装する機会がなく毎回調べてる気がするので(というか今まで数回しかないのだけど)、さすがにメモ。
1. deviseをプロジェクトに導入.
Gemfileに次の行を追加する。
gem devise
そして
bundle install
2. deviseのセットアップ
rails g devise:install
3. deviseの環境設定
config/engironments/development.rbに次の行を追加。
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
また app/views/layouts/application.html.hamlを開いて (hamlでやってます。)
- if notice %p{class: "alert alert-success"} = notice - if alert %p{class: "alert alert-danger"} = alert
を=yeald
の上に追加する。
4.User Modelをセットアップ
下記コマンドを実行。
rails g devise user rake db:migrate
5. ユーザーを作ってみる。
http://localhost:3000/users/sign_up を開いて作成してみる。
6. 登録画面をカスタマイズしてみる
現状だと登録画面にはemailとパスワードしか表示されていない。 さらにnameというfieldも追加してみる。
まずはdeivse viewを作成.
rails g devise:views invoke Devise::Generators::SharedViewsGenerator create app/views/devise/shared create app/views/devise/shared/_links.html.erb invoke form_for create app/views/devise/confirmations create app/views/devise/confirmations/new.html.erb create app/views/devise/passwords create app/views/devise/passwords/edit.html.erb create app/views/devise/passwords/new.html.erb create app/views/devise/registrations create app/views/devise/registrations/edit.html.erb create app/views/devise/registrations/new.html.erb create app/views/devise/sessions create app/views/devise/sessions/new.html.erb create app/views/devise/unlocks create app/views/devise/unlocks/new.html.erb invoke erb create app/views/devise/mailer create app/views/devise/mailer/confirmation_instructions.html.erb create app/views/devise/mailer/reset_password_instructions.html.erb create app/views/devise/mailer/unlock_instructions.html.erb
hamlに変換。(haml-railsとerb2hamlを入れてる必要があり。)
rake haml:replace_erbs
app/views/devise/registrations./new.html.hamlに下記を挿入。
.field = f.label :name %br/ = f.text_field :name
つぎにdeviseのcontrollerを生成。
rails g devise:controllers users
routingは下記のように設定。
devise_for :users, :controllers => { :registrations => 'users/registrations' }
生成されたUsers::RegistrationsControllerを編集。
# コメントを外す before_filter :configure_sign_up_params, only: [:create] : # コメントを外す def create super end : # コメントを外す protected : # コメントを外して :attribute となっているのを [:name] に変更 def configure_sign_up_params devise_parameter_sanitizer.for(:sign_up) << [:name] end
以上で、挙動確認して完了。
みんな使ってるけど、なんども実装するところじゃないのでやっぱり忘れますね^^;