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。