

railsのdeviceでログインが必要なページの場合に登録ページに飛ばす方法を教えて下さい。

デフォルトではログインページ(new_user_session)に飛んでしまいますが登録ページ(new_user_registration)へ誘導するにはどうしたらよいのでしょうか。


CC BY-SA 3.0
2015-04-15T01:46:18.087
9174
2015-04-15T05:49:48.627
9149
question
ruby-on-rails devise
railsのdeviceでログインが必要なページの場合に登録ページに飛ばす方法


`new_user_session`の内で登録できるようにするか、`new_user_session`でなんらかの判定をして`new_user_registration`にredirectすればよいのではないでしょうか？


CC BY-SA 3.0
2015-04-15T02:40:37.177
9179
2015-04-15T02:40:37.177
525
9174
answer


## `authenticate_user!`の動作をカスタマイズする方法

deviseのドキュメントにある[How To: Redirect to a specific page when the user can not be
authenticated](https://github.com/plataformatec/devise/wiki/How-To:-Redirect-
to-a-specific-page-when-the-user-can-not-be-
authenticated)のとおり、`Devise::FailureApp`を継承したクラスで`redirect_url`をオーバーライドすることでリダイレクト先を変更できます。

## アドホックな方法

デフォルトの`authenticate_user!`を使わずに、

[code]

    before_action :authenticate
    
    def authenticate
      redirect_to new_user_registration_url unless user_signed_in?
    end
    
[/code]

としてリダイレクトするのが手っ取り早いでしょうか。


CC BY-SA 3.0
2015-04-15T05:49:48.627
9186
2015-04-15T05:49:48.627
5793
9174
answer