gpt4 book ai didi

json - Ember.js with Rails accepts_nested_attributes_for 和多态 has_many/belongs_to

转载 作者:行者123 更新时间:2023-12-04 22:05:35 26 4
gpt4 key购买 nike

在 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

以及一个 Growers Controller ,它返回并可以创建/更新具有嵌入式地址属性的 Growers。我还有一个带有正确路由的地址 Controller ,以便可以为特定的种植者查看/创建/更新地址。后者更像是一个“in-case”,我不确定我是否需要将地址作为单独的有效负载返回/更新/创建。

我开始尝试拼凑一个 Ember 应用程序,它可以让我在查看/编辑/创建一个 Grower 的同时查看它的地址。任何人都可以指出我现有的真实或示例应用程序可以做到这一点吗?我将在进行过程中发布我的代码,但我已经知道我将遇到麻烦的一些领域:
  • Rails 返回/期望名为 addresses_attributes 的嵌套参数。 Ember,我敢肯定,不使用该约定。解决这个问题的最佳方法是什么?
  • 由于多态关联(除了 Grower 之外的对象都可以寻址),在 API/Address 端,为了获得正确的belongs_to 对象,Rails 将 addressable_id addressable_type 结合使用。在此示例中,addressable_type 将是“Grower”,addressable_id 将是 grower_id 值。在 Ember 方面如何翻译它?

  • 更新:

    我让它至少以几种不同的方式工作。我的首选解决方案,至少对于这种特殊情况,是在答案部分。

    最佳答案

    这是一个基于@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

    关于json - Ember.js with Rails accepts_nested_attributes_for 和多态 has_many/belongs_to,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17431934/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com