Rails какой должна быть модель / база данных при использовании CanCan gem для авторизации?

#ruby-on-rails #ruby #ruby-on-rails-3 #cancan

#ruby-on-rails #ruby #ruby-on-rails-3 #cancan

Вопрос:

Я использую devise в качестве авторизации. И вам интересно, какими должны быть модель и база данных. В этом эпизоде ailscasts http://railscasts.com/episodes/192-authorization-with-cancan Райан говорит, что он использует соотношение «многие ко многим» между ролями и пользователями.

Моя пользовательская модель:’

 class User < ActiveRecord::Base
has_and_belongs_to :roles
has_many :posts
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
end
  

Мой образец для подражания:

 class Role < ActiveRecord::Base
has_and_belongs_to :users
end
  

Но какой должна быть таблица ролей?

Я думал о создании таблицы ролей, подобной:

 id
admin - Boolean
moderator - Boolean
author - Boolean 
  

И затем таблица role_users:

 id 
role_id
user_id
  

Но почему у пользователя должно быть много ролей? При наличии логических значений?

Ответ №1:

Таблица ролей будет просто:

 id
role_name
  

Таким образом, вы можете добавлять роли без изменения схемы.