title: Setting up different User models and registration paths for Devise on Ruby on Rails
body: <p>I am very new to ruby and I have been really struggling with this for months. I searched extensively and tried what the answers said but still no luck. (I tried <a href="https://stackoverflow.com/questions/7299618/multiple-user-models-with-ruby-on-rails-and-devise-to-have-separate-registration">Multiple user models with Ruby On Rails and devise to have separate registration routes but one common login route</a> but didnt work)</p>
  
  <p>I currently have a user.rb model and it is connected to devise and works fine.</p>
  
  <p>1- On the sign-up page, I would like to have 3 buttons that would lead to separate registration forms (one each for business, manager and the already existing user). Do I set this up in routes.rb?
  2- The forms will have different attributes that will populate their respective databases. 
  3- After completion of the form they will be directed to their respective routes. User to the current default route while business to the business dashboard and manager to the manager dashboard. Is this again in routes.rb or devise?</p>
  
  <p>I would greatly appreciate any guidance!</p>
  
  <p>I've read through the documentations for devise, cancan and rolify but I can't seem to bring it all together to work for me.</p>
  
  <p>I am very new to ruby and I have been really struggling with this for months. I searched extensively and tried what the answers said but still no luck. (I tried <a href="https://stackoverflow.com/questions/7299618/multiple-user-models-with-ruby-on-rails-and-devise-to-have-separate-registration">Multiple user models with Ruby On Rails and devise to have separate registration routes but one common login route</a> but didnt work)</p>
  
  <p>I currently have a user.rb model and it is connected to devise and works fine.</p>
  
  <p>1- On the sign-up page, I would like to have 3 buttons that would lead to separate registration forms (one each for business, manager and the already existing user). Do I set this up in routes.rb?
  2- The forms will have different attributes that will populate their respective databases. 
  3- After completion of the form they will be directed to their respective routes. User to the current default route while business to the business dashboard and manager to the manager dashboard. Is this again in routes.rb or devise?</p>
  
  <p>I would greatly appreciate any guidance!</p>
  
  <p>I've read through the documentations for devise, cancan and rolify but I can't seem to bring it all together to work for me.</p>
  
  <pre><code>#user.rb
  class User &lt; ActiveRecord::Base
  has_many :contibutions
  
  rolify
  # Include default devise modules. Others available are:
  # :lockable, :timeoutable
  devise :database_authenticatable, :registerable, :confirmable,
       :recoverable, :rememberable, :trackable, :validatable, :omniauthable
  
  validates_format_of :email, :without =&gt; TEMP_EMAIL_REGEX, on: :update
  
  def admin?
    has_role?(:admin)
  end
  
  def self.find_for_oauth(auth, signed_in_resource = nil)
  
  # Get the identity and user if they exist
  identity = Identity.find_for_oauth(auth)
  user = identity.user
  if user.nil?
  
    # Get the existing user from email if the OAuth provider gives us an email
    user = User.where(:email =&gt; auth.info.email).first if auth.info.email
  
    # Create the user if it is a new registration
    if user.nil?
      user = User.new(
        name: auth.extra.raw_info.name,
        #username: auth.info.nickname || auth.uid,
        email: auth.info.email.blank? ? TEMP_EMAIL : auth.info.email,
        password: Devise.friendly_token[0,20]
      )
      user.skip_confirmation!
      user.save!
    end
  
    # Associate the identity with the user if not already
    if identity.user != user
      identity.user = user
      identity.save!
    end
  end
  user
  end
  end
  </code></pre>