我试图让Ember Data使用与类继承的hasMany关联.
Ember代码中的示例:
var Person = DS.Model.extend({
name: DS.attr('string'),
animals: DS.hasMany('Animal')
});
var Animal = DS.Model.extend({
name: DS.attr('string'),
owner: DS.belongsTo('Person')
});
var Dog = Animal.extend({
isBarking: DS.attr('boolean')
});
var Cat = Animal.extend({
isMeowing: DS.attr('boolean')
});
var fred = Person.createRecord({name: 'Fred'});
var ed = Dog.createRecord({name: 'Ed', isBarking: true});
// This gives:
// Error: assertion failed: You can only add records of Animal to this relationship.
fred.get('animals').pushObject(ed);
Run Code Online (Sandbox Code Playgroud)
我希望能够animals为每个人添加Cat和Dog实例.
Mongoid为Ruby/Rails提供的内容给出了如何实现它的一个例子:
http://mongoid.org/en/mongoid/docs/documents.html#inheritance
我知道Mongoid的继承实现(_type每个记录的自定义属性)可能对Ember Data来说太具体了.
如果有人能给我一个提示是否可以使用Ember Data进行上述提示,如果可以,我将如何实现这一点,我们将不胜感激.如果这是Ember Data根本不支持的东西,那也是我想要的答案.
我正在运行Ember 1.0.0-pre4和几天前的自定义Ember Data构建.
在Mongoid中,将文档推入embeds_many关系会自动将文档持久保存到数据库中。通常,这很好,但是当我需要跟踪对嵌入式文档的更改时遇到了问题。
假设您有两种模式:
class List
include Mongoid::Document
embeds_many :items
field :title
end
class Item
include Mongoid::Document
embedded_in :list
field :name
end
Run Code Online (Sandbox Code Playgroud)
这发生在.changes属性上:
list = List.new(title: 'List title')
list.save #list is now persisted
item = Item.new(name: 'Item name')
item.changes #returns Hash with {'name' => [nil, 'Item name']}
list.items << item #saves item to database under the hood
item.changes #returns empty Hash, because item was autosaved with list
Run Code Online (Sandbox Code Playgroud)
我可以item.previous_changes用来检查在将项目推入列表之前所做的更改,但是在我的特定情况下,这会给我带来各种麻烦,使事情难以管理。
我想要实现的是能够初始化Item文档,然后将其添加到list(通过<<或push),而无需立即将其持久化。
我知道Mongoid确实提供了一种建立 …