Всем привет) В общем ситуация такая, есть таблица User и Student. В Student есть user_id. Я хочу сделать так чтобы при сохранении записи в User , в таблице Student в поле user_id появился id только что сохраненного пользователя. Пытался делать с колбэками, но что то не получается. Реализовал кто то что-нибудь подобное? Поделитесь своим опытом. Заранее спасибо)
1. Почему такая архитектура? Почему Student не наследуется от User (STI), ну или просто это роль для пользователя - т.е. поменяв архитектуру Вы избавитесь от этой проблемы.
2. Если все же надо именно так, то да в коллбэке (aftre_save к примеру) создавайте своего студента (тут бы пригодился ваш код, чтобы понять что у Вас не так).
Александр Королев: Все правильно. Это роли для пользователя. В идеале должно быть так, я создаю пользователя и при создании выбираю его университетский статус(бакалавр, магистр, профессор и т.д) Есть три вида ролей: тренер, лидер, студент(это отдельные таблицы которые связаны с USer через user_id) Допустим я создаю пользователя и выбираю что он магистр и на основе этого статуса, в таблицах Student и Magister создаются записи сразу же после создания пользователя в User.
Всем спасибо за ответы. Я сделал не колбэками , а вот так.Все успешно сохраняется.
def create
@participant = Participant.new(participant_params)
if success = @participant.save
if @participant.academic_title.name == "Бакалавр"
@student = Student.new({:participant_id => @participant.id})
@student.save
flash[:success] = "Бакалавр успешно создан"
redirect_to participants_path
end
end
end