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」) が正しく表示されますが、私の問題は次のとおりです。
- 私は自分の投稿の created_at フィールドを使用しています (これは一意のキーの一部であると GetStream のドキュメントで説明されているため、更新できるようにするためです)
- 更新時に同じ created_at 時間を使用します
- バンド フィードをフェッチするとき、フィードは時系列で並べ替える必要があるため、このアクティビティが一番上にあると予想します。ただし、created_at 時間に基づいて以前の場所に残ります。
何をすべきか?
投稿の updated_at フィールドを使用してみることができますが、何らかの理由で GetStream フィードを更新せずに DB の投稿が変更された場合、GetStream で更新できなくなります。
何か不足していますか?