Q:

Two classes of users conflicting when trying to show profile pages

I have created two types of users- "users" and "shops".  My app is set up so that when a user logs in, they are sent to the home page which then displays their profile through ruby if-elsif-else logic.
My problem is that the second part of the logic, elsif, is not working and is rendering the home page rather than a Shop profile page.
home.html.erb
<% if logged_in? %> // corresponds to "user" model
<div>
  <aside class="col-md-4">
    <div>
      <h1>My Profile</h1>
    </div>
    <div class="hero-unit user_info">
      <%= render 'shared/user_info' %>
    </div>
    <section class="hero-unit car_form">
      <%= render 'shared/car_form' %>
    </section>
  </aside>

  <div class="col-md-8">
    <h1>My Cars</h1>
  </div>
  <div class="col-md-8">
    <%= render 'shared/feed' %>
  </div>
</div>

<% elsif shop_logged_in? %>  // checks if a shop has logged in

<div class="col-md-8">
    <%= render 'shared/shop_info' %>
</div>

<% else %>                //If no one is logged in, home page is shown
<div class="broke col-md-12">
  <div class="alive">
  <h1>Keep your car on the road<%= link_to "Sign up now!", signup_path, class: "btn btn-lg btn-primary" %></h1>
  </div>
</div>

I need for the <% elsif shop_logged_in? %> part to work correctly.  This is defined in the ShopSessionHelper:
  def shop_logged_in?
    !current_shop.nil?
  end

Then there's SessionHelper, which is for the user/driver class.  I'm somewhat concerned with some overlap between the two, it seems to be working ok though (advice here welcomed).
 def logged_in?
    !current_user.nil?
  end

These two should tell if it's a user or shop that's logged in, and render the correct page with the logic above.  Why's it not working?
For thoroughness, here are my controllers and helpers in full:
sessions_controller.rb 
class SessionsController < ApplicationController

  def new
  end

  def create
    user = User.find_by(email: params[:session][:email].downcase)
    if user && user.authenticate(params[:session][:password])
      log_in user
      params[:session][:remember_me] == '1' ? remember(user) : forget(user)
      redirect_to root_path
    else
      #Show error message
      flash.now[:danger] = 'Invalid email/password combination'
      render 'new'
    end
  end

  def destroy
    log_out if logged_in?
    redirect_to root_url
  end
end

sessions_helper.rb
module SessionsHelper

  # Logs in the given user.
  def log_in(user)
    session[:user_id] = user.id
  end

  # Remembers a user in a persistent session.
  def remember(user)
    user.remember
    cookies.permanent.signed[:user_id] = user.id
    cookies.permanent[:remember_token] = user.remember_token
  end

  def current_user?(user)
    user == current_user
  end

  # Returns the user corresponding to the remember token cookie.
  def current_user
    if (user_id = session[:user_id])
      @current_user ||= User.find_by(id: user_id)
    elsif (user_id = cookies.signed[:user_id])
      user = User.find_by(id: user_id)
      if user && user.authenticated?(cookies[:remember_token])
        log_in user
        @current_user = user
      end
    end
  end

  # Returns true if the user is logged in, false otherwise.
  def logged_in?
    !current_user.nil?
  end

  def forget(user)
    user.forget
    cookies.delete(:user_id)
    cookies.delete(:remember_token)
  end

  # Logs out the current user.
  def log_out
    forget(current_user)
    session.delete(:user_id)
    @current_user = nil
  end

  # Redirects to stored location (or to the default).
  def redirect_back_or(default)
    redirect_to(root_url)
    session.delete(:forwarding_url)
  end

  # Stores the URL trying to be accessed.
  def store_location
    session[:forwarding_url] = request.url if request.get?
  end
end

shop_sessions_controller.rb
    class ShopSessionsController < ApplicationController
      def new
      end

  def create
    shop = Shop.find_by(email: params[:session][:email].downcase)
    if shop && shop.authenticate(params[:session][:password])
      log_in shop
      params[:session][:remember_me] == '1' ? remember(shop) : forget(shop)
      redirect_to root_path
    else
      flash.now[:danger] = 'Invalid email/password combination'
      render 'new'
    end
  end

shop_sessions_helper.rb
module ShopSessionsHelper

  # Logs in the given shop.
  def log_in(shop)
    session[:shop_id] = shop.id
  end

  # Remembers a shop in a persistent session.
  def remember(shop)
    shop.remember
    cookies.permanent.signed[:shop_id] = shop.id
    cookies.permanent[:remember_token] = shop.remember_token
  end

  def current_shop?(shop)
    shop == current_shop
  end

  # Returns the shop corresponding to the remember token cookie.
  def current_shop
    if (shop_id = session[:shop_id])
      @current_shop ||= Shop.find_by(id: shop_id)
    elsif (shop_id = cookies.signed[:shop_id])
      shop = Shop.find_by(id: shop_id)
      if shop && shop.authenticated?(cookies[:remember_token])
        log_in shop
        @current_shop = shop
      end
    end
  end

  # Returns true if the shop is logged in, false otherwise.
  def shop_logged_in?
    !current_shop.nil?
  end

  def forget(shop)
    shop.forget
    cookies.delete(:shop_id)
    cookies.delete(:remember_token)
  end

  # Logs out the current shop.
  def log_out
    forget(current_shop)
    session.delete(:shop_id)
    @current_shop = nil
  end

  # Redirects to stored location (or to the default).
  def redirect_back_or(default)
    redirect_to(root_url)
    session.delete(:forwarding_url)
  end

  # Stores the URL trying to be accessed.
  def store_location
    session[:forwarding_url] = request.url if request.get?
  end
end

A:

1st some constructive criticism. Is there really a need to have a User Sessions Controller AND a Shop Sessions Controller? The only reason I can think of that the answer would be yes is if your app allowed both a User to be logged in and a Shop to be logged in, in the same session. And I think that doesn't happen since your home page logic:
<% if logged_in? %> // corresponds to "user" model
<% elsif shop_logged_in? %> // corresponds to "user" model

only checks for one or the other and has no way to handle both occurring at the same time. So for simplicity sake I would do away with the Shop Session Controller and handle both Shop Sessions and User Sessions from within the single Sessions Controller. 
To handle not allowing a shop to be logged in when a user is logged in per your comment below, I would do this:
Revise def log_out to def shop_log_out in Shop Sessions Helper and add it to log_in in User Sessions Helper:
Shop Sessions Helper:
def shop_log_out
  #your same code from before
end

User Sessions Helper:
def log_in(user)
  session[:user_id] = user.id
  if shop_logged_in? #check if a shop is logged in
    shop_log_out     #and log shop out if true
  end
end

Now if there is a shop logged in it will be logged out whenever a user logs in, preventing both from ever occurring at the same time.
If you chose to ignore my recommendations about using only one sessions controller I would do this:
<% elsif shop_logged_in? %>  // checks if a shop has logged in is failing. Try tracing back through your methods with puts to find out where it is failing. I would just step it back one method at a time, starting with:
def shop_logged_in?
  puts "-------------------------"      #add this code
  puts "current_shop = #{current_shop}" #this code
  puts "-------------------------"      #and this code
  !current_shop.nil?
end

Then save the code and navigate to your home page.
You will most likely get an error that states something about current_shop being nil. 
Now remove those puts from shop_logged_in? and go to def current_shop:
def current_shop
  if (shop_id = session[:shop_id])
    puts "---------------------"   #add this
    puts "inside current_shop if"  #and this
    @current_shop ||= Shop.find_by(id: shop_id)
  elsif (shop_id = cookies.signed[:shop_id])
    shop = Shop.find_by(id: shop_id)
    if shop && shop.authenticated?(cookies[:remember_token])
      log_in shop
      @current_shop = shop
    end
  end
end

If nothing puts in the terminal with the above revised code then I would move the puts down into the elsif to find out which part of the logic you are flowing through. If neither of those puts then you know that neither your if nor your elsif inside of def current_shop evaluate as true.
If that is the case then I would say that your routes.rb file is wrong. Does your shop login path route to shopsession#new?
The other thing I can think of is that you forgot to add include ShopSessionsHelper inside of Application Controller.

