title: How to set up Rails app that has different types of users?
body: <p>If I want to build a Rails app that has two different types of users, let's say one type is called <em>players</em> and the other one is <em>owners</em>, what is the best and most <strong>efficient</strong> approach to modeling the app?</p>
  
  <p>Things to take into account:</p>
  
  <ul>
  <li>There should only be one Login, but different Registration forms that Owners/Players can use.</li>
  <li><em>Owners</em> can have access to a control panel but <em>Players</em> cannot.</li>
  <li><em>Owners</em> cannot share any of <em>Players</em> capabilities, but both need to be able to perform Login/Registration.</li>
  <li>I am <strong>not</strong> using Devise, so please do not suggest it. </li>
  </ul>
  
  <p>Different Approaches I've considered:</p>
  
  <ul>
  <li><p><strong>Using <code>cancancan</code> gem</strong>, but it does not really <em>seem</em> to meet my needs in the sense that I am <strong>not</strong> looking to create a user/admin hierarchical approach but rather a <em>if you're a Player, then you can see these pages and perform these actions but Owners cannot</em> and vice versa. Almost like splitting the app in two. <code>cancancan</code> seems that it would treat <em>Owners</em> as "Players with extra privileges", not different privileges entirely.</p></li>
  <li><p><strong>Creating separate models with separate login and registration forms</strong>, which seems like a disaster waiting to happen. One small mixup between a <em>Players</em> table and the <em>Owners</em> table, especially with the primary keys, and that will be a world of trouble where people could end up logging in to the wrong accounts.</p></li>
  <li><p><strong>Creating a polymorphic or has_one relation toward an <em>Account</em> model</strong>, which so far, seems like the best way to probably go about it. If I created a polymorphic <em>Account</em> model, I can store different types of <em>Players</em>/<em>Owners</em>, but how could I compare login credentials against all types?</p></li>
  </ul>
  
  <p>I had been trying to find something on this matter regarding how to map this out and was surprised to not find an information on how to do this <em>without using Devise</em>. If anyone has any good links they can point me to that also address this matter (<em>without</em> Devise), please leave them in your answer! Thanks.</p>