Два простых вопроса о реализации ИППП - PullRequest
0 голосов
/ 11 ноября 2011

Я использую STI для своих пользовательских моделей. У меня есть класс User, а также подклассы Продавец и Клиент. Пользователь не может быть и тем и другим, поэтому я думаю, что STI в этом случае подходит. У меня два вопроса:

  1. Как ограничить создание пользовательских экземпляров, чтобы можно было создавать только продавцов или клиентов? Думаю, я мог бы подтвердить наличие Type, но мне это не кажется правильным.

  2. Могу ли я иметь дополнительные поля для продавцов и клиентов с STI? Как?

1 Ответ

1 голос
/ 11 ноября 2011

Вы можете разрешить сохранение пользователей и клиентов, выполнив:

validates_inclusion_of :type, :in => [:customer, :user]

Что касается вашего второго вопроса, ответ таков: добавьте столбцы.Если вы добавите столбцы для клиента, пользовательская модель будет игнорировать их, так что ничего страшного.Это зависит от вашего варианта использования, но в некоторых случаях лучше избегать ИППП.

...