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

За да създадете приложение, което поддържа оторизация в Rails с помощта на cancan, зависи от разработчика да реши какъв ще бъде методът на ролята. Сега трябва да разбера най-доброто за моя случай - Това е традиционният модел с една роля на потребител.

Методите, които намерих, изглеждат доста сходни от мен. Чудя се дали наистина има техническа разлика при избора на ролеви модели или е просто въпрос на предпочитание? Ако има технически разлики, какви са компромисите при избора на един или друг модел, по-специално при мащабирането?

Някои възможни модели, които можах да намеря:

Точките за статии, които сравняват тези подходи в коментарите, се оценяват, тъй като не можах да намеря много материал за сравняването им.


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


Отговори (1)


Ако имате нужда само от една роля за употреба, просто изберете най-простия подход.

  1. Добавете едно поле за низ към потребител; наречена "роля".
  2. Добавете масив към User за съхранение на стойностите: ROLES = %w{System\ Admin Admin Customer Etc}
  3. Добавете някои помощни методи към user, за да можете лесно да проверите за роля (т.е. 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