В моем приложении 3 вида пользователей: Клуб, Персона и Администратор .Каждый из них сильно отличается друг от друга, что означает, что они почти не разделяют никаких атрибутов, кроме данных аутентификации, поэтому я бы предпочел использовать 3 разных модели .Кроме того, я хочу включить единую модель аутентификации для всех этих типов пользователей, используя Authlogic , и обрабатывать авторизацию, используя CanCan .
Изначально я думал о чем-то вродеthis.
class User < ActiveRecord::Base
# This class has the email and password in order to be authenticated with Authlogic
end
И для каждого из них у меня будет
class Club < User end
class Admin < User end
Но тогда таблица User будет захламлена всеми столбцами других типов пользователей, и они останутся нулевыми.
Другой вариант будет
class User < ActiveRecord::Base
# This class has the email and password in order to be authenticated with Authlogic
belongs_to :role, :polymorphic => true
end
И для каждого типа пользователя будет назначена роль.Проблема в том, что доступ к свойствам метода будет выглядеть примерно так: user.role.logo
.Один из способов решить эту проблему - использовать делегат, но все же я не знаю, лучший ли это вариант.
Вопрос в том, как бы вы предложили мне реализовать это?Какой будет лучший способ?