4

Rails API 側には、次の 2 つのモデルがあります。

class Grower < ActiveRecord::Base
 has_many :addresses, as: :addressable
 accepts_nested_attributes_for :addresses
end

class Address < ActiveRecord::Base
  belongs_to :addressable, polymorphic: true
end

また、Addresses 属性が埋め込まれた Growers を返し、Growers を作成/更新できる Growers コントローラー。また、特定の栽培者のアドレスを表示/作成/更新できるように、適切なルーティングを備えたアドレス コントローラーもあります。後者は「場合に応じた」ものであり、別のペイロードとしてアドレスを返す/更新する/作成する必要があるかどうかはわかりません。

アドレスと同時にGrowerを表示/編集/作成できるEmberアプリをまとめようとしています。これを行う既存の実際のアプリまたはサンプルアプリを教えてもらえますか? 進行中にコードを投稿しますが、問題が発生する可能性のあるいくつかの領域についてはすでに考えています。

  1. Rails は、 addresses_attributesという名前のネストされたパラメーターを返す/期待します。Ember は、その規則を使用していないことは確かです。これを解決する最善の方法は何ですか?

  2. API/Address 側では、ポリモーフィックな関連付け (Grower 以外のオブジェクトをアドレス指定できる) のため、Rails はaddressable_idをaddressable_typeと組み合わせて使用​​して、正しい belongs_to オブジェクトを取得します。この例では、addressable_type は「Grower」になり、addressable_id は grower_id 値になります。Ember側でそれを翻訳するにはどうすればよいでしょうか?

アップデート:

少なくともいくつかの異なる方法で動作するようにしました。少なくともこの特定のケースでは、私が好む解決策は回答セクションにあります。

4

2 に答える 2

8

これは、私にとってうまくいったコードベースの@yuяiの戦略のサンプルです。

App.Post = DS.Model.extend
    comments: DS.hasMany('comment')

App.PostSerializer = DS.ActiveModelSerializer.extend( DS.EmbeddedRecordsMixin,
    attrs:
        comments: {embedded: 'always'}

    keyForAttribute: (attr) ->
        if attr == "comments"
            "comments_attributes"
        else
            @_super(attr)
)

このソリューションは、Ember 1.6.1および Ember Data 1.0.0-beta.8.2a68c63a でうまく機能しました。

于 2014-07-30T11:14:38.263 に答える