I have two classes Protocolo
and Movimentacoes
, in saving Protocolo
I create a new Movimentação
.
class Protocolo < ActiveRecord::Base
has_many :movimentacoes
after_create :movimentacao_inicial
def movimentar(status, usuario, comentario = nil)
usuario = Usuario.find(usuario) if usuario.is_a?(Integer)
if movimentacoes.create(status: status, usuario: usuario, comentario: comentario).valid?
update_columns(status_atual: status)
else
false
end
end
def movimentacao_inicial
movimentar('enviado', usuario)
end
validates_associated :movimentacoes
end
And class Move
class Movimentacao < ActiveRecord::Base
belongs_to :protocolo
validates :usuario, :protocolo, presence: true
end
So whenever Protocolo
is saved, I should create a new Movimentação
and update the current status of Protocolo
with status
of last movimentação
created.
Problem: If Movimentacao
is invalid, Protocolo
has already been created and I can not create a movimentação
before creating a protocolo
.
Does anyone know of any way around this?