こんにちは、hachi8833です。Devise How-Toシリーズ、本日2本めです。
Devise Wikiもくじリンク
- 「ワークフローのカスタマイズ」
- 「認証方法のカスタマイズ」「OmniAuth」
- 「ビュー/コンテンツのカスタマイズ」「特権/認証」
- 「テスト」「特殊な設定」
- 「アプリでのその他の設定」「JavaScript」
- 「他の認証プラグインからの移行」「アップグレード」
概要
- 原文: How To: Customize routes to user registration pages
- リビジョン: 15 Aug 2012 · 2 revisions
原文の更新や誤りにお気づきの場合は、ぜひ@techrachoまでお知らせください。更新いたします。
[How-To] ユーザー登録ページへのルーティングをカスタマイズする(翻訳)
Customer::Private
とCustomer::Public
という2つのDeviseユーザーモデルがあるとします。
models/customer/private.rb
models/customer/public.rb
コントローラの設定
それぞれのユーザーのアクションについてスコープを設定するために、以下のコントローラを作成します。
# app/controllers/customer/private/registrations_controller.rb
class Customer
class Private
class RegistrationsController < Devise::RegistrationsController
end
end
end
ビューの設定
以下のような2つのビューを作成する必要があります。
views/customer/private/registrations/new.html.haml
views/customer/public/registrations/new.html.haml
You will likely want to have a _form.html.haml partial for each.
それぞれのビューには_form.html.haml
というパーシャル(部分テンプレート)があるとします。
Deviseの登録ルーティングを設定する
ルーティングファイル(conf/routes.rb)に以下を記述します。
devise_for :private_customers, :class_name => 'Customer::Private', :controllers => {:registrations => "customer/
private/registrations", :sessions => 'main' } do
get "private_customer/sign_up" => "customer/private/registrations#new", :as => :private_customer_signup
get "private_customer/sign_in" => "main#index", :as => :private_customer_signin
end
上はprivate_customers
用です。public_customers
についても同じように設定します。
あとはビューにlink_to 'register', private_customer_signup_path
と記述すればビューで使えるようになります。
関連記事(Devise)
- [Devise How-To] sign_inとsign_outのデフォルトルーティングを変更する(翻訳)
- [Devise How-To]ユーザーのパスワードを自動生成する(シンプルな登録方法)(翻訳)
- Rails4: 古いdeviseのパスワードを新しいdeviseで使う方法
- Rails 3.1.0.rc8にしようとしたらdeviseが違うバージョンのbcryptに依存していてアップデートできない
- [Rails 3] deviseで使うモデルにfind_by_で始まる名前のscopeを定義するとrake db:migrate:resetが通らない
- [Rails 3] 失敗しないmigrationを書こう
- [Rails 3] Appサーバが複数だとdevise_openid_authenticatableで認証できない