канкан ролевые стратегии сравнение стратегий / компромиссы

Чтобы создать приложение, поддерживающее авторизацию в Rails с помощью канкана, разработчик должен решить, каким будет ролевой метод. Теперь мне нужно выяснить, что лучше всего подходит для моего случая. Это традиционная модель с одной ролью на пользователя.

Методы, которые я нашел, кажутся мне очень похожими. Интересно, действительно ли существует техническая разница при выборе образцов для подражания или это просто вопрос предпочтений? Если есть технические различия, каковы компромиссы при выборе той или иной модели, особенно в отношении масштабирования?

Некоторые возможные модели, которые я смог найти:

Очки за статьи, в которых сравниваются эти подходы в комментариях, приветствуются, так как я не смог найти много материала для их сравнения.


person fotanus    schedule 07.09.2013    source источник


Ответы (1)


Если вам нужна только одна роль для каждого использования, используйте самый простой подход.

  1. Добавить одно строковое поле для пользователя; называется «роль».
  2. Добавьте массив пользователю для хранения значений: ROLES = %w{System\ Admin Admin Customer Etc}
  3. Добавьте некоторые вспомогательные методы для пользователя, чтобы вы могли легко проверить роль (например, user.admin?)

Помощники по ролям:

ROLES.each do |role_name|
  define_method "#{role_name.downcase.tr(" ", "_")}?" do
    role == role_name
  end
end

Вы можете легко использовать более сложные варианты в будущем, если это необходимо.

person steakchaser    schedule 07.09.2013