问题标签 [nested-attributes]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
688 浏览

ruby-on-rails - 使用嵌套实体形式管理子关系

我想要做的是以下几点:

在任何时候,用户都可以拥有 1 个有效的个人资料。此活动配置文件必须由管理员授权,以确保其符合站点的规则和规定。当用户编辑他们的个人资料时,他们的公开个人资料不受影响,直到管理员签署他们的更改。如果他们在他们的个人资料正在审核中进行编辑,他们的编辑将应用于未完成的个人资料以供审核,并被推到队列的后面。

我的模型看起来像这样:

有一个小转折......用户不应该能够直接编辑配置文件,因为配置文件集合没有公开。相反,他们编辑他们的用户,并且配置文件字段显示在那里。

管理此问题的最佳方法是什么?目前我正在使用:

在用户中,但这似乎很hacky。理想情况下,大多数这种逻辑都存在于模型中,但我正在调情的另一件事是使用演示者。

任何想法将不胜感激,如果您需要更多信息作为评论,请告诉我,我会适当地更新这篇文章。

0 投票
1 回答
1618 浏览

ruby-on-rails - 当 :allow_destroy => true 时移除关联而不是销毁对象

在 ActiveRecord 中使用新功能accepts_nested_attributes_for时,可以使用选项:allow_destroy => true. 设置此选项后,任何包含嵌套属性(如{"_delete"=>"1", "id"=>"..."}传递给)的哈希update_attributes都将删除嵌套对象。

简单设置:

问题:我如何 - 而不是删除嵌套对象时"_delete" => "1"- 只是删除关联?(即在上述情况下,将用户的 forum_id 设置为 nil)

额外问题:如果我还想在删除关联时更改嵌套对象的属性怎么办?(例如设置状态或时间戳)

0 投票
4 回答
33699 浏览

ruby-on-rails - 让fields_for和accepts_nested_attributes_for与belongs_to关系一起工作

我似乎无法使用Rails 2.3belongs_to的新功能在 Rails 视图中生成嵌套表单以生成关系。accepts_nested_attributes_for我确实检查了许多可用的资源,看起来我的代码应该可以正常工作,但fields_for对我来说是爆炸性的,我怀疑它与我如何配置嵌套模型有关。

我遇到的错误是一个常见的错误,可能有很多原因:

以下是涉及的两个模型:

也许这就是我做“荣”的地方,因为一个帐户可以有一个“所有者”,也可以有一个“用户”,但一个用户只有一个“帐户”,基于用户模型 account_id 键。

这是 new.html.haml 中让我大吃一惊的视图代码:

这是新操作的控制器代码:

当我尝试加载 /account/new 时,出现以下异常:

如果我尝试使用神秘的“构建”方法,它只会在控制器中爆炸,可能是因为构建只是用于多记录关系:

如果我尝试在控制器中使用@account.owner_attributes = {} 或@account.owner = User.new 进行设置,我会回到原来的错误,“@account[owner] 不允许作为实例变量的名称”。

有没有其他人有新的accepts_nested_attributes_for 方法来处理belongs_to 关系?你有什么特别或不同的事情要做吗?所有官方示例和示例代码(如Ryans Scraps 上的精彩内容)都与多记录关联有关。

0 投票
1 回答
831 浏览

ruby-on-rails - 如何访问 ActiveRecord::AutosaveAssociation.marked_for_destruction?从父模型中

我有一个模型 Person,具有以下关联:

自定义验证当前在不应该失败的情况下失败——当一些验证被标记为销毁时——因为它们仍然出现在 Person 和它的分布被保存。

我想ActiveRecord::AutosaveAssociation.marked_for_destruction?在我的验证器中使用,以忽略即将被销毁的分布。

  1. 我如何达到这种方法?不太确定 Distribution(您的正常 Rails 模型)与该类的关系是什么。

  2. 这是一个可怕的不洁黑客吗?它只是感觉有点脏,这是解决问题的最精确的方法。

我确实在调试器中逐步检查了 ActiveRecord 源代码,以确认记录实际上已标记为销毁(即不是 Javascript 或表单构建器错误)。

0 投票
1 回答
1214 浏览

ruby-on-rails - 使用嵌套属性的 before_add 回调

鉴于以下情况:

Foo has_many :bars, :through => :baz

Foo accepts_nested_attributes_for :bar

我想find_or_create_by_name在添加新的时做一个:bar,但我不知道在哪里可以拥有某种before_add功能。

这个问题的背景是Bar validates_uniqueness_of :name,当我尝试创建一个Foo使用现有Bar.

0 投票
2 回答
3407 浏览

ruby-on-rails - HABTM 双嵌套字段_for

有趣的代码段,我无法开始工作。我有以下模型/关系(排除不必要的代码)

显示所有这些信息的表单:

以及处理提交的控制器:

html看起来很干净:

提交的参数如下所示:

我返回“# 的未定义方法'service_subtype'”错误,唯一未更新的表是 HABTM 模型之间的连接表。知道如何解决这个问题或幕后发生了什么吗?我不确定我是否理解此过程背后发生的“魔力”以使其正常工作。似乎大多数人都说 HABTM 不适用于嵌套属性。似乎是这样。变通?

0 投票
1 回答
849 浏览

ruby-on-rails - 更新嵌套属性集合后是否需要调用 ActiveRecord::Base.reload?

我发现(在脚本/控制台中闲逛)如果我将新项目添加到关联的集合中,我不必调用 foo.reload 来查看结果更改:

了不起。但是当我从集合中删除一个项目时,我必须在更改(调用保存后在 DB 中可见)反映在我的集合中之前调用 foo.reload:

这是正常的,还是我在关联更新中做错了什么?

0 投票
2 回答
1564 浏览

ruby-on-rails - 嵌套属性和通过控制器添加属性?

由于这个问题很难描述,这是我能想到的最好的标题,所以这里有一些代码。

给定三个模型 Parent、Child && Grandchild。

我想将 current_user.id 添加到在 Parent#new 期间创建的子记录和孙子记录中。我现在使用隐藏字段,因为我找不到添加它们的好方法。

也许有人可以通过创建回调以在创建时添加 current_user.id 来提供帮助?无论如何,我从来没有把它变成模型的运气,但你很聪明。

想法?

0 投票
4 回答
2635 浏览

ruby-on-rails - Ruby on rails - 嵌套属性:如何查找或创建嵌套模型

我有一个Bill带有嵌套模型的Customer模型。该Customer模型有一个电话号码,上面有唯一性验证。在创建账单时,我想根据电话号码获取现有记录,或者如果不存在则创建一个新记录。我应该怎么做RESTful

0 投票
1 回答
1463 浏览

ruby-on-rails - 如何在 before_update 回调中处理 activerecord 嵌套属性的新子级

我有一个模型对象(比方说父)与另一个模型对象(子)上的 has_many 关联。

在父级上,我想在 before_update 回调上添加代码以根据其子级设置计算属性。

我遇到的问题是,当我使用 Parent.update(id, atts) 方法为新子代添加 atts 时,atts 集合中添加的那些在 before_update 期间不可用(self.children 返回旧集合) .

有没有办法在不弄乱accept_nested_attributes_for的情况下检索新的?