#ruby-on-rails #sti
#ruby-on-rails #sti
Вопрос:
Я использую STI для своих пользовательских моделей. У меня есть класс User и подклассы Seller и Customer. Пользователь не может быть и тем, и другим, поэтому я думаю, что STI подходит для этого случая. У меня есть два вопроса:
-
Как мне ограничить создание пользовательских экземпляров, чтобы можно было создавать только продавцов или клиентов? Думаю, я мог бы подтвердить наличие Type, но мне кажется, что это не совсем правильно.
-
Могу ли я иметь дополнительные, разные поля для продавцов и клиентов с STI? Как?
Ответ №1:
Вы можете разрешить сохранение пользователей и заказчиков, только выполнив:
validates_inclusion_of :type, :in => [:customer, :user]
Что касается вашего второго вопроса, ответ таков: добавьте столбцы. Если вы добавите столбцы для клиента, пользовательская модель их проигнорирует, так что ничего страшного. Это зависит от вашего варианта использования, хотя в некоторых случаях лучше избегать STI.
Комментарии:
1. вы бы попробовали
add_column :child_name, :field_name, :type_name
? Похоже, у меня это не работает.