JavaScriptをがんばるブログ

React,OSS,ソフトウェア開発が中心のブログです👨‍💻

ruby on rails:ブログ利用におけるログイン認証gem「devise」の設定

deviseはデフォルトだと誰でも新規ユーザー作成ページにアクセス出来る仕様です。

ブログの場合は一度管理用ユーザーを作った後、
ログインページとログアウト機能があれば良いので不要なルーティングを削除しました。

#routes.rb
 
  #元の設定
  devise_for :users

  #許可するurlクエリを設定
  #ルーティングに:sessionというクエリは無いけど書かないと動かなかった
  devise_for :users, only: [:sign_in, :sign_out, :session]

参考:Rails3+deviseで不要なアクションへのroutesを無効にする

不要なルーティングを削除したので、
deviseのログインページにある新規ユーザー作成画面へのリンクパスが無い、
と怒られます。

undefined local variable or method `new_user_registration_path'

こんな具合に。

存在しないルーティング名をviewにセットしようした事が原因なのでviewファイルを編集します。

デフォルトだとdeviseのviewファイルは編集出来る場所に無いので、
下のコマンドでapp/views配下にdeviseのviewファイルを生成します。

$ rails g devise:views

参考:Railsのログイン認証gemのDeviseのカスタマイズ方法

エラーメッセージを見ると
「views/devise/shared/_links.html.erb」にエラー箇所があったので中身を全部消したら正常に動きました。

このパーシャル丸々不要な事分かったのでログインページ
「views/devise/sessions/new.html.erb」から

  <%= render "devise/shared/links" %>

を消してあげればOK。

そのうちdeviseの他の機能が使いたくなったらroutes.rbのonly属性を外してあげて、

$ rails g devise:views

で初期状態のviewファイルを再生成してあげればOK。