Posted at

Railsでログイン時のルーティングを定義する(deviseのauthenticatedみたいなやつ)

More than 1 year has passed since last update.

deviseを使うとconfig/routes.rbに


config/routes.rb

Rails.application.routes.draw do

authenticated :user do
root to: 'dashboard#show', as: :user_root
end

root to: 'landing#show'
end


こんな感じで、ログイン時とそうでない時のルーティングが書けます。


authenticated-instance_method

http://www.rubydoc.info/github/plataformatec/devise/master/ActionDispatch/Routing/Mapper#authenticated-instance_method


これをdevise以外で実現したい時は、constraintsで実現できます。


config/routes.rb

class AuthenticatedConstraint

def matches?(request)
request.session['user_id'].present?
end
end

Rails.application.routes.draw do
constraints AuthenticatedConstraint.new do
root to: 'dashboard#show', as: :user_root
end

root to: 'landing#show'
end


便利(\( ⁰⊖⁰)/)