Итак, я знаю, что этот вопрос задавался множество раз, но мой вопрос идет немного дальше.
При моделировании моего приложения у меня есть два типа пользователей, которые имеют полиморфную связь с моделью пользователя. Такие как:
class User < ActiveRecord::Base
belongs_to :profileable, :polymorphic => true
end
class User_Type_1 < ActiveRecord::Base
has_one :user, :as => :profileable
end
class User_Type_2 < ActiveRecord::Base
has_one :user, :as => :profileable
end
Причина, по которой я сделал это вместо STI, заключается в том, что User_Type_1
имеет что-то вроде 4 полей, а User_Type_2
имеет что-то вроде 20 полей, и я не хотел, чтобы в пользовательской таблице было так много полей (да, 24 иш полей не много, но я бы предпочел не иметь ~ 20 полей пустыми большую часть времени)
Я понимаю, как это работает, мой вопрос: я хочу, чтобы форма регистрации использовалась только для регистрации пользователей типа User_Type_1
, но форма входа использовалась для обоих. (У меня будет административная часть приложения, которая будет создавать пользователей User_Type_2
)
Я знаю, что могу использовать переопределение after_sign_in_path_for(resource)
в AppicationController
для перенаправления в правую часть сайта при входе. Что-то вроде:
def after_sign_in_path_for(resource)
case current_user.profileable_type
when "user_type_1"
return user_type_1_index_path
when "user_type_2"
return user_type_1_index_path
end
end
Итак, я думаю, мои вопросы: как заставить форму работать с Devise и разрешить регистрацию только типа User_Type_1
, а затем войти в нее после sign_up?
Кроме того, если я поступаю неправильно, каков правильный путь?