説明が1000文字を超えるとイベントがサイレントで失敗します

概要:

イベントの説明が1000文字を超えると、表示が空白になるか、以前のイベントの説明が表示されます。

これは discourse_post_event_events テーブルのハードリミットが原因です: description character varying(1000)

再現手順 #1

  • イベントを作成します
  • イベントの説明([event][/event] の間のテキスト)を1000文字以上にします
  • レンダリングされた投稿にイベントの説明が表示されなくなります

再現手順 #2

  • イベントを作成します
  • イベントの説明([event][/event] の間のテキスト)を1000文字未満にします
  • イベントを編集します
  • イベントの説明([event][/event] の間のテキスト)を1000文字以上にします
  • レンダリングされた投稿に以前のイベントの説明が表示されます

これにより、検索汚染(search poisoning)も可能になります。

関連

同じことが url フィールドと location フィールドにも当てはまるようです

期待される動作

以下のいずれか:

a) イベントの説明に文字数制限を設けない
b) イベントの説明が長すぎる場合に明確な警告を表示する
c) レンダリング時にイベントの説明を切り詰める(Markdownには完全なテキストが保存されたまま)

「いいね!」 6

ありがとうございます。

個人的には、警告なしのオプション (c) も不十分だと思います。もし私が投票する権利があるなら、(a) が最良の解決策です。

「いいね!」 1

最新版で再現確認しました(本日テスト実施)。ユーザーから、Eventカードが表示されないという問題の報告がありました。原因は不明です。トピックは正常に保存されており、生投稿内のEventマークアップも正しく記述されていましたが、トピック内や他のどこにもEventカードが表示されませんでした。コンポーザーの警告、保存エラー、ブラウザコンソールのエラー、関連する/logsのエントリも一切ありませんでした。

私は b) の「明確な警告またはバリデーションエラー」に賛成です。

ここで一つ追加すると、Eventマークアップが他の理由で正しくパースできない場合にも、まったく同じ挙動(カードが表示されないというサイレントな失敗)が発生します。数ヶ月前に私が調査していたケースでは、ユーザーがWordでEventマークアップを丁寧に準備し、それをDiscourseにコピー&ペーストしたところ、data=項目の周りに自動的に「スマートクオート」が挿入されてしまい、その結果、想像できるようなおかしな事態が起きました。

したがって、たとえコンソールに表示されるだけのものでも、目に見えるエラーが出ると非常に助かります。

「いいね!」 2