コレクションにアイテムを追加すると、すぐに保存されます(ユーザーが保存されていない場合を除く)。saveを呼び出すと、独自のトランザクションが作成され、アイテムが保存されたトランザクションではなく、ロールバックされます。
明示的に作成することで、すべてを同じトランザクションに強制することができます。
begin
User.transaction do
@user.items << item
@user.save!
render :json => {}, :status => :ok
end
rescue ActiveRecord::RecordInvalid
render :json => {:status => :error, :errors => item.errors}, :status => :bad_request
end