[Devise How-To]ユーザー登録ページへのルーティングをカスタマイズする(翻訳)

こんにちは、hachi8833です。Devise How-Toシリーズ、本日2本めです。

Devise Wikiもくじリンク

  1. 「ワークフローのカスタマイズ」
  2. 「認証方法のカスタマイズ」「OmniAuth」
  3. 「ビュー/コンテンツのカスタマイズ」「特権/認証」
  4. 「テスト」「特殊な設定」
  5. 「アプリでのその他の設定」「JavaScript」
  6. 「他の認証プラグインからの移行」「アップグレード」

概要

原文の更新や誤りにお気づきの場合は、ぜひ@techrachoまでお知らせください。更新いたします。

[How-To] ユーザー登録ページへのルーティングをカスタマイズする(翻訳)

Customer::PrivateCustomer::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)

Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

hachi8833

Twitter: @hachi8833、GitHub: @hachi8833

コボラー、ITコンサル、ローカライズ業界、Rails開発を経てTechRachoの編集・記事作成を担当。
これまでにRuby on Rails チュートリアル第2版の半分ほど、Railsガイドの初期翻訳ではほぼすべてを翻訳。その後も折に触れてそれぞれ一部を翻訳。
かと思うと、正規表現の粋を尽くした日本語エラーチェックサービス enno.jpを運営。
実は最近Go言語が好き。
仕事に関係ないすっとこブログ「あけてくれ」は2000年頃から多少の中断をはさんで継続、現在はnote.muに移転。

hachi8833の書いた記事

BPSアドベントカレンダー

週刊Railsウォッチ

インフラ

BigBinary記事より

ActiveSupport探訪シリーズ