生成されたメール付き招待リンクは引き換えできません

/invites.json API エンドポイントに以下の JSON を送信しています。

{
    "email": "new.member@example.com",
    "skip_email": true,
    "max_redemptions_allowed": 1,
    "expires_at": << 現在の日付 + 1 ヶ月 >>
    "group_names": "example_group"
}

これにより有効な招待が作成され、その招待リンクを取得してユーザーに提供しています。

しかし、ユーザーが招待の交換を試みると、discourse/app/controllers/invites_controller.rb at main · discourse/discourse · GitHub で失敗し、データベースの更新が何らかの理由で失敗したことに起因する汎用的な invite.error_message エラーが発生します。

コードを追跡しようとしていますが、明らかに問題となる箇所は見当たりません。

invites テーブルからのレコード例は以下の通りです。

  id  |            invite_key            |            email             | invited_by_id | user_id | redeemed_at |         created_at         |         updated_at         | deleted_at | deleted_by_id |       invalidated_at       | moderator | custom_message | emailed_status | max_redemptions_allowed | redemption_count |       expires_at
 1587 | 4b4e........................2307 | example@gmail.com            |             1 |         |             | 2021-04-11 23:51:05.253528 | 2021-04-11 23:51:05.253528 |            |               |                            | f         |                |              0 |                       1 |                0 | 2021-05-11 11:51:05.193

UIから試しましたか?動作しますか?もし動作する場合、UIから送信されるリクエストと、あなたが行ったリクエストの違いは何でしょうか?

サイトの /logs に何か記録はありますか?

残念ながら、ログには何も記録されていません。UI からの試行は行っていないので、それについても確認します。

ところで、本番環境でパッチを適用したりフォークを実行する方法を説明した投稿はありますか?こちらのコメントをご覧ください:Install Discourse for development using Docker - #152 by jessicah.

@sam 一部のユーザーにのみ影響し、他のユーザーには影響していないようですが、何が異なるのか特定できていません :-/

追加のログを出力するパッチを実行したいのですが、前のメッセージのリンクによると、開発環境では実行できても本番環境では動作させることができないため、どのようにデバッグすればよいかわかりません :frowning:

招待できるユーザーは限られています。API を介して招待を行っているユーザーに招待権限があることを確認してください。

invited_by_id は 1(つまり管理者)であり、すべての招待に使用されます。

「いいね!」 1

こんにちは、ジェシカさん。

4 月以来、招待コードは大きく変更されましたが、こちらでまだ問題が発生しているようでしたら教えていただけますか?

cc @dan

「いいね!」 2