ユーザーカードデータソースの変更

現在、ユーザーカードをクリックすると /u/david.json が読み込まれますが、これは完全なプロフィールと同じエンドポイントです。ユーザーカードはデータのごく一部しか使っていないため、これは少し無駄です。

そのため、ユーザーカードは新しいルート /u/david/card.json を使うように切り替えます。これにはカードの描画に必要な情報のみが含まれます。私のテストでは、これによりユーザーカードの読み込みが以前の 2〜3 倍高速になりました!

現時点ではこの変更は非表示のサイト設定の背後に隠されています。試すには、Rails コンソールにアクセスして以下を実行してください。

SiteSetting.enable_new_user_card_route = true

今後数週間で、この設定はデフォルトで有効になり、サイト設定自体は削除されます。現在は Meta で既に有効になっています。

素晴らしい!何をする必要がありますか?

ユーザーまたはフォーラム管理者の場合、何もする必要はありません!まもなくユーザーカードのパフォーマンスが向上するはずです!

プラグイン開発者の場合、新しいルートをサポートするためにいくつかの調整が必要になる可能性があります。

カスタムフィールドをプラグインで使用し、ユーザーカードでレンダリングしている

問題ありません。カスタムフィールドはこれまでと全く同じように動作し続けます。

ユーザーシリアライザーにデータを追加し、完全なユーザープロフィールで使用している

問題ありません。ユーザープロフィールは引き続き古いエンドポイントを使用し、既存の add_to_serializer 呼び出しも引き続き機能します。

ユーザーシリアライザーにデータを追加し、ユーザーカードで使用している

少し作業が必要です。以前は以下のような構造でした。

class UserSerializer < BasicUserSerializer

現在は以下のような構造になっています。

class UserCardSerializer < BasicUserSerializer
# および
class UserSerializer < UserCardSerializer

カードエンドポイントに含めたい場合は、UserCardSerializer に追加する必要があります。例えば、以下のようなコードがある場合:

add_to_serializer(:user, :favourite_forum_software) do
  "discourse"
end

以下のように変更する必要があります。

add_to_serializer(:user_card, :favourite_forum_software) do
  "discourse"
end

UserSerializerUserCardSerializer の内容を自動的に含めるため、この変更をすぐに適用できます。テストが通過すれば(非表示のサイト設定が無効でも)動作します。

安定版/ベータ版との互換性を維持するには、以下のように UserCardSerializer の存在をチェックしてください。

# TODO: Discourse 2.4 安定版リリース後にこのスイッチを削除
serializer = (defined? UserCardSerializer) ? :user_card : :user 
add_to_serializer(serializer, :favourite_forum_software) do
  "discourse"
end
「いいね!」 22

素晴らしいですね、@david。これを見るのが本当に楽しみです。ユーザーカードに新しいシリアライザーが必要だという点に、私は 100% 同意します。

この変更は、/u ルートでユーザーカードを表示するための基盤も築くものだと思います。

「いいね!」 7

その通りです!お楽しみに :eyes:

「いいね!」 7

現在はこれが新しいデフォルトとなっており、設定は削除されました

「いいね!」 6