Rails: Walidacja powiązania po zapisaniu?

mamUser model, który ma wieleroles. Role zawiera auser_id pole, które chcęvalidate_presence_of

Problem polega na tym, że jeśli przypiszę rolę użytkownikowi podczas tworzenia, sprawdzanie poprawności nie powiedzie się, ponieważ nie ustawiono identyfikatora użytkownika. Teraz jarobić chcę sprawdzić, czy użytkownik user_id istnieje, ale muszę go zapisać przed sprawdzeniem tego.

Kod wygląda obecnie tak:

@user = User.new(params[:user])
@user.roles << Role.new(:name => 'Peon') unless @user.has_roles?
if @user.save
  # ...

Jedyne sposoby, aby myśleć o obejściu tego problemu, to albo wyłączenie sprawdzania poprawności, którego nie chcę wykonywać, albo podwójne zapisywanie w DB, co nie jest dokładnie wydajne.

Jaki jest standardowy sposób obsługi tego problemu?

questionAnswers(4)

yourAnswerToTheQuestion