Я пишу ruby on rails application, у которого будут два разных типа пользователей (скажем, продавцы и покупатели). Я использую devise gem для проверки подлинности.Ruby on rails - 2 типа пользователей
Я не хочу использовать однонаправленное наследование по 3 причинам:
1) Я не хочу иметь много столбцов в моей пользовательской таблице (мне нужно было бы хранить поля как для продавца, так и для покупателя в один стол, и они будут иметь много различных fileds)
2) Я не хочу иметь много нулевых значений в моей базе данных
3) Сохраняя продавцов и покупателей, отделенные поможет улучшить скорость работы
Я решил создать 2 отдельные модели для продавцов и покупателей (и генерировать их для каждого из них). Короче говоря, это вызвало некоторые проблемы (т. Е. Трудности с обработкой входа в систему с помощью одной формы, использование полиморфных ассоциаций для простых вещей, таких как «личное сообщение», сохранение моего кода DRY и т. Д.)
Так что вот что:
Вы думаете, что было бы неплохо создать одну модель (пользователь) с некоторыми распространенными полями, чтобы легко обрабатывать аутентификацию с помощью разработки, а затем иметь отдельные модели (продавцы и покупатели) с ассоциациями 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/buyers/id
Если Вы можете придумать лучшее решение для моей проблемы - пожалуйста, дайте мне знать.
Возможный дубликат [Rails - дизайн приложения для 2 типов пользователей] (http://stackoverflow.com/questions/9517406/rails-application-design-for-2-user-types) того же пользователя. –