title: cancan role strategies strategies comparision / tradeoffs
body: <p>To create an application that supports authorization in Rails using cancan, it is up to the developer to decide what will be the role method. Now I need to figure out the best for my case - It is the traditional one-role-per-user model.</p>
  
  <p>The methods I found seems to be quite similar from me. I wonder if there is really a technical difference while selecting the role models, or is just a question of preference? If there are techincal differences, what are the trade-offs in selecting one model or another, in special about scaling?</p>
  
  <p>Some possible models I could found:</p>
  
  <ul>
  <li>Using the gem <a href="https://github.com/EppO/rolify" rel="nofollow noreferrer">rolify</a></li>
  <li>Using <a href="https://stackoverflow.com/questions/5701178/rails-single-table-inheritance-or-not-for-applicant-employee-relationship">single table inheritance</a></li>
  <li>Using a <a href="https://github.com/ryanb/cancan/wiki/Role-Based-Authorization" rel="nofollow noreferrer">row in the users table</a> </li>
  <li>Separated tables for each user type, according to its role</li>
  <li><a href="http://techspry.com/ruby_and_rails/multiple-table-inheritance-in-rails-3/" rel="nofollow noreferrer">Multiple table inheritance</a></li>
  <li><a href="https://github.com/ryanb/cancan/wiki/Separate-Role-Model" rel="nofollow noreferrer">Table with roles</a> and using relationships</li>
  </ul>
  
  <p>Points for articles that compare these approaches on the comments are appreciated, since I couldn't find much material comparing them.</p>