【发布时间】:2015-07-02 20:29:51
【问题描述】:
我正在构建一个基于聊天的应用程序,它允许用户查看消息历史记录、发送新消息并从最近的用户中进行选择。最近的用户列表按recent_rating 属性排序,该属性是与该用户相关的最后发送/接收消息的日期。 recent_rating 不是数据库中的属性,而是在用户模型中声明的方法。当我第一次使用代码中的以下设置加载页面时,用户被正确排序:
序列化器:
class UserSerializer < ActiveModel::Serializer
attributes :id, :email, :name, :recent_rating
end
导轨型号:
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'),
});
但是,当我发送新消息时,我需要更新本地 ember-data 存储中的recent_rating 属性以获取相关用户记录。这反过来会更新最近用户的列表排序。
如何更新 Ember-Data 中记录的属性并避免 API POST 请求?由于recent_rating 在 API 端的数据库中不作为属性存在
谢谢
【问题讨论】:
-
一个模型在调用 save 之前不应该持续到服务器上,你是如何更新记录的?
标签: ember.js ember-data