begin
ActiveRecord::Base.transaction do
installations.each do |installation|
id = installation.id
installation = current_user.installations.find_by(:id=> id)
@ticket = installation.tickets.new(ticket_params)
unless @ticket.save
raise ActiveRecord::Rollback
end
end
end
redirect_to '/tickets', notice: "done"
rescue ActiveRecord::Rollback
render action: "new", notice: "problem" and return
end
最初のチケットが有効で、2番目のチケットが無効であるとします。このコードでは、最初のチケットが保存されます。しかし、1つ失敗したときにすべてのチケットをロールバックしたい。 どうすればいいですか?1つのオブジェクトがすべてのオブジェクトのロールバックに失敗した場合
どのように働いていないということですか? – ndn
コードを短縮することはできますが、うまくいくはずです。 – Stefan
このコードの問題は、最初のチケットが保存されていることです。私は2つのチケットをロールバックしたい@ndn – lolix