5

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")

これは機能しているように見えますが、クラスを返すだけで、デバッグして機能しているかどうかを確認する方法がわかりません。

私は2つの特定の質問があります:

  1. コンソールを使用して関連付けをデバッグし、それらが正しく機能していることを確認するにはどうすればよいですか。

  2. エントリを(親に埋め込むのではなく)個別にロードする場合、上記のようなネストされたルートを使用するにはどうすればよいですか?

4

1 に答える 1

4

まず、モデルから関連付けを取得すると、DS.ManyArray想定したオブジェクトを含む が返されます。
これをデバッグするにはいくつかの方法があります。まず、 、 、 、 などの通常の配列メソッドにlength応答firstObjectlastObjectますobjectAt
それが十分に役に立たない場合はtoArray、バニラ JS 配列に変換するものにも応答します。

残念ながら、ember-data の最新のイテレーションでは、実際には埋め込まれたレコードが削除されます (これは一時的なものかもしれません)。現在、ネストされたリソース URL はデフォルトの RESTAdapter ではサポートされていませんが、ニーズに合わせていつでもカスタマイズできます

ただし、ネストされたリソースをコアに入れる作業が行われています。PR の#367#257を参照してください。

于 2012-10-22T14:43:52.407 に答える