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?