Я создаю приложение на основе чата, которое позволяет пользователям просматривать историю сообщений, отправлять новые сообщения и выбирать из последних пользователей. Список последних пользователей сортируется с помощью атрибута recent_rating
, который является датой последнего отправленного/полученного сообщения, связанного с этим пользователем. recent_rating
не является атрибутом в базе данных, а метод объявляется в пользовательской модели. Пользователи мы заказывают правильно, когда я загрузить страницу в первый раз со следующей настройкой в моем коде:Как обновить запись локально с помощью Ember-Data и Ember?
Serializer:
class UserSerializer < ActiveModel::Serializer
attributes :id, :email, :name, :recent_rating
end
Rails модель:
def recent_rating
Message.where('recipient_id = :user_id OR sender_id = :user_id', user_id: id).last.try(:created_at)
end
Ember контроллер:
App.ChatsController = Ember.ArrayController.extend(
{
sortProperties: ['recent_rating'],
sortAscending: false,
....
});
Ember модель:
App.User = DS.Model.extend(
{
name: DS.attr('string'),
email: DS.attr('string'),
recent_rating: DS.attr('string'),
});
Однако, когда я отправляю новое сообщение, мне нужно обновить атрибут recent_rating
в локальном хранилище данных ember для соответствующей записи пользователя. Это, в свою очередь, обновит список заказов для последних пользователей.
Как обновить атрибут записи в Ember-Data и избежать запроса POST API? Как recent_rating
не существует в качестве атрибута в базе данных на стороне API
Благодарности
Модель не должна сохраняться на сервере до тех пор, пока на ней не будет вызвано сохранение, как вы обновляете запись? – Jakeii