Я пишу приложение ruby для рельсов, которое будет иметь 2 разных типа пользователей (скажем, продавцы и покупатели).Я использую devise gem для обработки аутентификации.
Я не хочу использовать наследование одной таблицы по 3 причинам:
1) Я не хочу, чтобы в моей пользовательской таблице было много столбцов (Мне нужно было бы хранить поля для продавца и покупателя в одной таблице, и они будут иметь много разных полей)
2) Я не хочу, чтобы в моей базе данных было много пустых значений
3)Разделение продавцов и покупателей поможет повысить скорость работы
Я решил создать 2 отдельные модели для продавцов и покупателей (и создать для каждой из них устройство).Короче говоря - это вызвало некоторые проблемы (т.е. проблемы с обработкой входа в систему с помощью одной формы, использованием полиморфных ассоциаций для простых вещей, таких как «личное сообщение», хранение моего кода СУХОЙ и т. Д.)вопрос:
Как вы думаете, было бы неплохо создать одну модель (пользователя) с некоторыми общими полями для простой обработки аутентификации с помощью устройства devise, а затем иметь отдельные модели (продавцов и покупателей) с ассоциациями own_to и has_one дляхранить больше информации.Примерно так:
class User < ActiveRecord::Base
has_one :seller
has_one :buyer
end
class Seller < ActiveRecord::Base
belongs_to :user, :conditions => "user_type= 'seller'"
end
class Buyer < ActiveRecord::Base
belongs_to :user, :conditions => "user_type= 'buyer'"
end
Это хорошее решение?Или вы думаете, что наследование одной таблицы было бы лучше?
Какие проблемы / трудности это может вызвать?
Какими будут маршруты для отображения страницы профиля для каждого пользователя?Я хотел бы иметь что-то вроде website.com / sellers / id и website.com / покупатели / id
Если вы можете придумать лучшее решениедля моей проблемы - пожалуйста, дайте мне знать.