我们正在使用 Ember 数据和 Rails 实现一项功能,但一直遇到困难。我们不确定这是我们的代码有问题,是 Ember 或 Ember 数据的错误,还是只是因为缺乏文档而没有得到它。
任何帮助将非常感激。
导轨
我们有一个待办事项列表,其中包含多个条目。在 Rails 中,它们的设置如下:
class ToDo < ActiveRecord::Base
has_many :to_do_entries, dependent: :destroy
alias_method :entries, :to_do_entries
validates_presence_of :title
end
class ToDoEntry < ActiveRecord::Base
attr_accessible :completed_at, :is_deleted, :priority, :title
belongs_to :to_do
alias_method :parent, :to_do
validates_presence_of :to_do, :title
end
路由设置为嵌套:
resources :to_dos do
resources :to_do_entries do
end
end
所以最终的 URL 最终是/to_do/:to_do_id/to_do_entry/:to_do_entry_id。
我们正在使用 active_model_serializers gem 并设置了以下序列化程序:
class ToDoSerializer < ActiveModel::Serializer
attributes :id,
:title
has_many :to_do_entries, embed: :objects
end
class ToDoEntrySerializer < ActiveModel::Serializer
attributes :id,
:to_do_id,
:title,
:priority
has_one :to_do
end
余烬
我们使用 Ember 数据和 REST 适配器,等效模型设置如下:
App.ToDo = DS.Model.extend({
title: DS.attr('string'),
entries: DS.hasMany('App.ToDoEntry', { embedded: true })
});
App.ToDoEntry = DS.Model.extend({
title: DS.attr('string'),
to_do_id: DS.attr('number'),
priority: DS.attr('number'),
todo: DS.belongsTo('App.ToDo')
});
问题
我的理解是,我们应该能够通过在控制台中使用以下命令直接从 ToDo 访问条目列表:
> t = App.ToDo.find(21)
> e = t.get("entries")
这似乎确实有效,但只是返回一个类,我不知道如何调试它并查看它是否有效。
我有两个具体问题:
我们如何使用控制台调试关联并确保它们正常工作。
如果我们单独加载条目(而不是将它们嵌入到父级中),我们如何使它使用像上面那样的嵌套路由?