]> cat aescling's git repositories - mastodon.git/commitdiff
attach_media should be in transaction of creation status (#2426)
authorKeiji, Yoshimi <walf443@gmail.com>
Wed, 26 Apr 2017 01:47:44 +0000 (10:47 +0900)
committerEugen Rochko <eugen@zeonfederated.com>
Wed, 26 Apr 2017 01:47:44 +0000 (03:47 +0200)
app/services/post_status_service.rb

index 958cc289008d7d1ad6da00c8061cdcc781f250e0..30b8032ed9356895f26788eeb0c3f3a70dada04a 100644 (file)
@@ -20,15 +20,17 @@ class PostStatusService < BaseService
     end
 
     media  = validate_media!(options[:media_ids])
-    status = account.statuses.create!(text: text,
-                                      thread: in_reply_to,
-                                      sensitive: options[:sensitive],
-                                      spoiler_text: options[:spoiler_text] || '',
-                                      visibility: options[:visibility],
-                                      language: detect_language_for(text, account),
-                                      application: options[:application])
-
-    attach_media(status, media)
+    status = nil
+    ApplicationRecord.transaction do
+      status = account.statuses.create!(text: text,
+                                        thread: in_reply_to,
+                                        sensitive: options[:sensitive],
+                                        spoiler_text: options[:spoiler_text] || '',
+                                        visibility: options[:visibility],
+                                        language: detect_language_for(text, account),
+                                        application: options[:application])
+      attach_media(status, media)
+    end
     process_mentions_service.call(status)
     process_hashtags_service.call(status)