在Ember,我通常会提交这样的资源:
App.FooNewController = Ember.ObjectController.extend(
actions:
submit: ->
@get('model').save().then ((response) =>
@transitionToRoute('foo', @content)
), (response) =>
@set "errors", response.errors
)
这是有效的,因为用户输入Foo表单的所有数据都很好地转换为Foo模型。但是包含敏感信息的用户模型呢,比如密码和电子邮件地址呢?我宁愿不在模型中包含该信息。但是,如果它不存在,那么当我提交带有这些字段的用户表单时,即使提交了非敏感数据(如用户名),Ember Data也不会将密码和电子邮件提交给服务器。
所以我的问题是,如何在提交时让Ember Data包含密码和电子邮件字段?我正在使用ActiveModelAdapter。
答案 0 :(得分:2)
您的模型应包含敏感字段,例如:
App.User= DS.Model.extend({
userName: DS.attr('string'),
email: DS.attr('string'),
password: DS.attr('string'),
passwordConfirmation: DS.attr('string')
};
但是,当请求用户时,您的服务器不应发送电子邮件/密码信息。在您的视图中,您可以让用户添加此信息,然后执行以下操作:
this.get('model').save();
用户完成的电子邮件和密码将提交给服务器。然后,服务器应回复模型数据的副本,不包括电子邮件和密码,这将导致模型使用空白电子邮件和密码进行更新。
此外,当用户离开您的视图而不向服务器提交数据时,可能会执行以下操作:
this.get('model').rollback();
将回滚用户可能对视图中的字段所做的任何更改。