У меня есть четыре модели со следующим примером:
У пользователя есть один A, B или C.
User.user_type = "A"
User.user_type_id = 12
В сочетании user_type и user_type_id идентифицируют таблицу и запись, к которой привязан конкретный пользователь (в этом примере наш пользователь подключен к записи № 12 в таблице A).
В форме user / new,пользователь решает, какой он пользователь, и форма передает params [: user_type], содержащий «A», «B» или «C», в контроллер Users /: create.
На основании параметров [: user_type], переданных Users / create, мне нужно построить новый A, B или C. Это то, что я получил до сих пор:
Users controller, create:
if @user.save # user_type is present, user_type_id is not
if @user.user_type == "A"
@a = A.new.save(false) # build a new A and bypass validation
@user.user_type_id = @a.id # set user's user_type_id.
@user.save(false) # minor update so save without validation
elsif @user.user_type == "B"
...
elsif @user.user_type == "C"
...
end
end
Этот код неправильно дает мне «2» для user_type_id каждый раз.Я знаю, что я поступаю об этом, как правило, неправильно, но я не знаю, как сделать это максимально кратко.Любой совет?
------ РЕДАКТИРОВАТЬ ------
У меня настроены полиморфные ассоциации.Моя текущая настройка:
Пользователь принадлежит_то: аутентифицируемый,: полиморфный => истина
А has_many: пользователи,: как =>: аутентифицируемый (аналогично для B и C)