1

GetStream.io フィードを使用する音楽アプリ (例のようなもの) があると仮定します。ここには、ユーザー フィードとバンド フィード (ユーザーが他のユーザーまたはバンドをフォローできる) があります。私はストラム ルビーの宝石を使用しています。

ここで、次のようなことを行って、ユーザーとしてバンド フィードに投稿するとします。

user_feed = @client.feed('user', user_id)
activity_data = {
    :actor => "User:#{user_id}",
    :verb => 'post',
    :object => "Post:#{post.id}",
    :target => "Band:#{band_id}",
    :foreign_id => "Post:#{post.id}",
    :time => post.created_at.as_json,
    :comment => 'comment 1',
    :to => ["band:#{band_id}"]
}
user_feed.add_activity(activity_data)

これは問題なく動作し、バンド フィードを取得すると、次の投稿が表示されます。

@client.feed('band', band_id).get()

現在、このエントリを更新しようとしています (コメント フィールドを使用して変更を確認しています)。

activity_data = {
    :actor => "User:#{user_id}",
    :verb => 'post',
    :object => "Post:#{post.id}",
    :target => "Band:#{band_id}",
    :foreign_id => "Post:#{post.id}",
    :time => post.created_at.as_json,
    :comment => 'comment 2',
    :to => ["band:#{band_id}"]
}
@client.update_activity(activity_data)

バンド フィードを取得すると、新しいコメント (「コメント 2」) が正しく表示されますが、私の問題は次のとおりです。

  1. 私は自分の投稿の created_at フィールドを使用しています (これは一意のキーの一部であると GetStream のドキュメントで説明されているため、更新できるようにするためです)
  2. 更新時に同じ created_at 時間を使用します
  3. バンド フィードをフェッチするとき、フィードは時系列で並べ替える必要があるため、このアクティビティが一番上にあると予想します。ただし、created_at 時間に基づいて以前の場所に残ります。

何をすべきか?

投稿の updated_at フィールドを使用してみることができますが、何らかの理由で GetStream フィードを更新せずに DB の投稿が変更された場合、GetStream で更新できなくなります。

何か不足していますか?

4

1 に答える 1