グループ参加時にユーザーをTL2に昇格させる - 遡及的に?

既存のグループを変更し、追加されたメンバーに自動的に付与される信頼レベル の値を 2 に設定しました。これにより、このグループのすべてのメンバーは、グループに追加される際に信頼レベル 2 にプロンプトが表示されるようになります。

しかし、既存のグループメンバー全員が遡って信頼レベル 2 に追加されるわけではありません :confused:

これを強制するにはどうすればよいですか?

または、グループのすべてのメンバーを遡って TL2 にアップグレードするにはどうすればよいですか? :thinking:

「いいね!」 3

:warning: このソリューションは高度なものです。Rails コマンドは、サーバーへの SSH アクセスがある場合にのみ実行でき、自信がない場合は避けるべきです。いずれの場合も、必ず最初にバックアップを実行してください。


リッチーさん、こんにちは :slight_smile:

次のような Rails スクリプトを使用できます。

Rails コンソールからこれで完了するはずです。

target_group = Group.find_by_name("test")
users = User.joins(:group_users).where(group_users:{group_id: target_group.id})
users.each do |u|
  u.trust_level = 2
  u.save
end

Delete all users not in a specific group - #2 by nathank を提供してくれた @nathank に感謝します :slight_smile:

「いいね!」 3

@Canapin ありがとうございます。

レールコンソールには全く慣れていませんが、ここに投稿されたものを実行したところ、ENDで止まり、カーソルが点滅しています。

この変更をコミットする必要はありますか? :thinking:

(彼らはまだTL2に昇格していません)

「いいね!」 1

いいえ、それはスクリプトの実行に影響を与えない出力にすぎません。そこから抜けるには「q」キーを押すことができると思います。

こちらも使用できます。

Group.find_by_name("test") の部分に関連している可能性があります。実際のグループ名を受け入れるのか、それともスラッグを受け入れるのかはわかりません。 :person_shrugging:


また、railsコマンドの使用はかなり高度であり、このようなことを行う前にバックアップを作成する必要があることを言及すべきでした。申し訳ありません。

「いいね!」 2

うーん、何か奇妙なことが起こりました。

このRailsスクリプトを実行する前にTL1だったユーザーを見ると、彼らが現在TL2になっていることがわかります(素晴らしい、本当にありがとうございます!)。

しかし、TL2ユーザーグループを見ると、グループ内のユーザー総数が増加していません :thinking:

同様に、TL2にアップグレードされたばかりのユーザーの1人を検索しても、TL2グループの検索結果に表示されません。

:thinking:

また、ユーザーはTL2バッジを獲得していません。

:thinking:

「いいね!」 1

グループはSidekiqジョブ中に更新されます。

タスクはEnsureDbConsistencyで、Sidekiq経由でトリガーできます(方法がわかれば)。数時間待つこともできます。グループは自動的に更新されます。:slight_smile:

ここで解決しました。

:slight_smile:

「いいね!」 3

素晴らしい、ありがとうございます!

解決するのを気長に待ちますね :blush:

お時間と解決策をいただきありがとうございます、@Canapin さん。手作業でこの作業をしてくださったおかげで、膨大な時間を節約できました :scream:

「いいね!」 1

どういたしまして。

あまりにも早くレールコマンドを提案してしまい、適切な警告なしに実行すると、何をしているのかわからない場合に問題が発生する可能性があることを考慮していませんでした。投稿にもっと目立つ警告を追加しますね :slight_smile:

「いいね!」 3

このRailsタスクにより、TL4およびTL3ユーザーがすべてTL2にダウングレードされたようです :thinking:

EnsureDbConsistencyタスクが、一晩で自動的にすべて修正してくれることを願っています :blush:

「いいね!」 1

TL3ユーザーは、引き続き基準を満たしていれば昇格されます。

TL4は手動で昇格する必要があります。

これを回避するには、各ユーザーをステートメントで評価し、TL2未満の場合にのみ昇格させる必要があります。

TL4ユーザーがグループのメンバーでもある場合は、それを使用して一括昇格させることができます。

「いいね!」 3

素晴らしい情報、ありがとうございます @Stephen 今からやります :slight_smile:

「いいね!」 3

今朝はすべて順調です :blush:

@Canapin@Stephen、改めてありがとう :wave:

「いいね!」 3

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.