プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Ruby on Rails
  • 【Rails】「devise_for」と「devise_scope」について
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Rails】「devise_for」と「devise_scope」について

02.06

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

基本的にどちらもDeviseにおいてルーティングのカスタマイズをしたい場合に使うDevise独自のDSLになります。

devise_for

devise_forの内部的にはdevise_scopeメソッドを使用してルーティングが作成されています。

1
devise_for :users

devise内のコントローラで処理をする際に、スコープを設定するという処理をしています。

省略されていますが、細かく書けば下記のように記述し直すことが可能です。(というか普通のアプリではほぼ間違いなくカスタマイズすることになるので下記の文法は把握しておいた方が良いです。)

1
2
3
4
5
  devise_for(
    :users,
    path: 'users',
    module: 'devise'
  )

:users

deviseのログインユーザーの対象となっているモデル

path

deviseで生成するURLの基準となるパスです。これを書き換えればURLを変更できます。

modules

deviseのコントローラの場所を指しています。deviseではデフォルトだと「controllers/devise/session_controller.rb」と「controllers/devise/registration_controller.rb」があります。「devise」はそのディレクトリ名ですね。

一般的なアプリケーションの場合は利用者の画面と管理者側の画面があることが多いでしょうからディレクトリが「controller/devise/users」と「controller/devise/admins」で分けて別々に設定をすることが多いです。その場合の指定は「module: 'devise/users'」や「module: 'devise/admins'」とします。

devise_scope

deviseに新しくルーティングを追加したい場合に使います。(これを使わないとエラーが発生します。)

1
2
3
devise_scope :users do
  get 'ルーティング情報', to: 'users/registrations#アクション'
end

例えば、UserモデルのためにDeviseコントローラを検証したコントローラのアクションを作成した場合は上記のように指定する必要があります。

例

新しいユーザーを作る場合のルーティング指定

1
2
3
  devise_scope :customer do
    get 'signup', to: 'devise/registrations#new'
  end

スポンサーリンク
  • 2021 02.06
  • miyabisan2
  • コメントを書く
  • Ruby on Rails
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2018 06.20

    【Ruby on Rails】ページごとに、読み込まれるCSSとJavaScriptを変えるには?(Rails5まで)

  2. 2020 07.18

    【Ruby on Rails】環境変数に関する知識、direnv

  3. 2019 12.24

    【Ruby on Rails】「rake」について

  4. 2019 12.07

    【Ruby on Rails】「Active Job」でジョブを非同期実行する。(Sidekiq)

  5. 2020 11.11

    【Ruby on Rails】「Capistrano」について

  6. 2020 10.13

    【Ruby on Rails】「pundit」について

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Rails】「find_or_initialize_…

【Rails】「devise」のテストコードの書き方や…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー