埋め込みメディア投稿が許可されたグループが投稿モデレーションワークフローと競合:非表示解除!がActiveRecord::RecordInvalidで失敗

埋め込みメディア投稿が許可されているグループ」と「投稿の表示に戻すワークフロー」の間に競合があります。

投稿者が許可されたメディアグループに属していない場合、その投稿が(フラグによって)非表示になった後、モデレーターがその非表示の投稿を編集してメディアを追加すると、投稿を表示に戻そうとすると以下のエラーで失敗します。

ActiveRecord::RecordInvalid
Validation failed: Sorry, you can't embed media items in a post.

表示に戻すプロセスは、モデレーターの権限ではなく、元の投稿者の権限を使用してメディアの検証を再実行するため、表示に戻す処理が失敗します。


再現手順

  1. 埋め込みメディア投稿が許可されているグループを設定し、信頼度の低いユーザーを除外します。
  2. 許可されたグループに含まれていないユーザーを使用して投稿を作成します。
  3. その投稿がシステムフラグによって非表示にされるようにします。(ここが少し不確かです。投稿はフラグによってのみ非表示にでき、スタッフによる手動操作はできないように見えます。スタッフはトピックは非表示にできますが、個々の投稿は非表示にできません。もし間違っていたら訂正してください。)
  4. モデレーターが非表示の投稿を編集し、メディア(画像/動画)を挿入します。
  5. 投稿を表示に戻そうと試みます(UIから、またはRailsコンソールでpost.unhide!を実行します)。
  6. 操作が以下のエラーで失敗します。

ActiveRecord::RecordInvalid Validation failed: Sorry, you can't embed media items in a post.