问题标签 [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.
ruby-on-rails - 使用嵌套实体形式管理子关系
我想要做的是以下几点:
在任何时候,用户都可以拥有 1 个有效的个人资料。此活动配置文件必须由管理员授权,以确保其符合站点的规则和规定。当用户编辑他们的个人资料时,他们的公开个人资料不受影响,直到管理员签署他们的更改。如果他们在他们的个人资料正在审核中进行编辑,他们的编辑将应用于未完成的个人资料以供审核,并被推到队列的后面。
我的模型看起来像这样:
有一个小转折......用户不应该能够直接编辑配置文件,因为配置文件集合没有公开。相反,他们编辑他们的用户,并且配置文件字段显示在那里。
管理此问题的最佳方法是什么?目前我正在使用:
在用户中,但这似乎很hacky。理想情况下,大多数这种逻辑都存在于模型中,但我正在调情的另一件事是使用演示者。
任何想法将不胜感激,如果您需要更多信息作为评论,请告诉我,我会适当地更新这篇文章。
ruby-on-rails - 当 :allow_destroy => true 时移除关联而不是销毁对象
在 ActiveRecord 中使用新功能accepts_nested_attributes_for
时,可以使用选项:allow_destroy => true
. 设置此选项后,任何包含嵌套属性(如{"_delete"=>"1", "id"=>"..."}
传递给)的哈希update_attributes
都将删除嵌套对象。
简单设置:
问题:我如何 - 而不是删除嵌套对象时"_delete" => "1"
- 只是删除关联?(即在上述情况下,将用户的 forum_id 设置为 nil)
额外问题:如果我还想在删除关联时更改嵌套对象的属性怎么办?(例如设置状态或时间戳)
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 上的精彩内容)都与多记录关联有关。
ruby-on-rails - 如何访问 ActiveRecord::AutosaveAssociation.marked_for_destruction?从父模型中
我有一个模型 Person,具有以下关联:
自定义验证当前在不应该失败的情况下失败——当一些验证被标记为销毁时——因为它们仍然出现在 Person 和它的分布被保存。
我想ActiveRecord::AutosaveAssociation.marked_for_destruction?
在我的验证器中使用,以忽略即将被销毁的分布。
我如何达到这种方法?不太确定 Distribution(您的正常 Rails 模型)与该类的关系是什么。
这是一个可怕的不洁黑客吗?它只是感觉有点脏,这是解决问题的最精确的方法。
我确实在调试器中逐步检查了 ActiveRecord 源代码,以确认记录实际上已标记为销毁(即不是 Javascript 或表单构建器错误)。
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
.
ruby-on-rails - HABTM 双嵌套字段_for
有趣的代码段,我无法开始工作。我有以下模型/关系(排除不必要的代码)
显示所有这些信息的表单:
以及处理提交的控制器:
html看起来很干净:
提交的参数如下所示:
我返回“# 的未定义方法'service_subtype'”错误,唯一未更新的表是 HABTM 模型之间的连接表。知道如何解决这个问题或幕后发生了什么吗?我不确定我是否理解此过程背后发生的“魔力”以使其正常工作。似乎大多数人都说 HABTM 不适用于嵌套属性。似乎是这样。变通?
ruby-on-rails - 更新嵌套属性集合后是否需要调用 ActiveRecord::Base.reload?
我发现(在脚本/控制台中闲逛)如果我将新项目添加到关联的集合中,我不必调用 foo.reload 来查看结果更改:
了不起。但是当我从集合中删除一个项目时,我必须在更改(调用保存后在 DB 中可见)反映在我的集合中之前调用 foo.reload:
这是正常的,还是我在关联更新中做错了什么?
ruby-on-rails - 嵌套属性和通过控制器添加属性?
由于这个问题很难描述,这是我能想到的最好的标题,所以这里有一些代码。
给定三个模型 Parent、Child && Grandchild。
我想将 current_user.id 添加到在 Parent#new 期间创建的子记录和孙子记录中。我现在使用隐藏字段,因为我找不到添加它们的好方法。
也许有人可以通过创建回调以在创建时添加 current_user.id 来提供帮助?无论如何,我从来没有把它变成模型的运气,但你很聪明。
想法?
ruby-on-rails - Ruby on rails - 嵌套属性:如何查找或创建嵌套模型
我有一个Bill
带有嵌套模型的Customer
模型。该Customer
模型有一个电话号码,上面有唯一性验证。在创建账单时,我想根据电话号码获取现有记录,或者如果不存在则创建一个新记录。我应该怎么做RESTful
?
ruby-on-rails - 如何在 before_update 回调中处理 activerecord 嵌套属性的新子级
我有一个模型对象(比方说父)与另一个模型对象(子)上的 has_many 关联。
在父级上,我想在 before_update 回调上添加代码以根据其子级设置计算属性。
我遇到的问题是,当我使用 Parent.update(id, atts) 方法为新子代添加 atts 时,atts 集合中添加的那些在 before_update 期间不可用(self.children 返回旧集合) .
有没有办法在不弄乱accept_nested_attributes_for的情况下检索新的?