问题标签 [associations]

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 投票
1 回答
346 浏览

ruby-on-rails - has_many :通过关联

是否有可能建立某种关联:

用户型号:

在控制台中测试

正在记录:

那么有没有什么漂亮的方法可以使这种关联不仅从数据库中获取记录,而且可以写入数据库?

0 投票
1 回答
3785 浏览

ruby-on-rails - Rails 中的多态关联

多态关联在 Rails 中是如何工作的?他们的优势是什么?有没有办法belongs_to通过运行迁移来添加方法?

0 投票
1 回答
928 浏览

ruby-on-rails - 多态关联不保存 ClassName(没有 STI),有什么提示吗?

我有两个模型,一个叫做 Notes,一个叫做 Comments。评论可以与许多其他模型相关联,因此我使用多态关联。在 schema.rb 中它看起来像这样:

当我想将评论保存到笔记时,一切似乎都有效:

奇怪的是,在评论表中它保存了 commentable_type = 0 而不是 = "Note" 应该是。如果我输入@note.comments,它仍然会找到评论。

我不明白这种行为。你有什么想法?

0 投票
2 回答
6501 浏览

ruby-on-rails - 带有复选框的嵌套对象-即使使用accepts_nested_attributes_for也可以批量分配?

我认为应该有一个简单的解决方案,因为 Rails 2.3 具有这种新奇的嵌套表单功能。基本上我想创建或更新一个用户并同时为他们分配角色。

似乎我做的一切都是正确的,但我收到错误警告:无法批量分配这些受保护的属性:roles_attributes

我什至尝试将视图更改为 user[permissions_attributes][role_id] 因为我认为可能连接表让 Rails 感到困惑。

无论如何,关于这应该如何实际工作的任何建议?

模型

视图摘录(注意我尝试并未能让 fields_for 在这里生成我想要的东西,也许这是我的问题?)

遇到的参数似乎是正确的:

解决方案我拼写错误的组合,没有使用attr_accessible,需要访问permissions_attributes,并且表单略有偏差。

模型:

看法:

0 投票
2 回答
1291 浏览

database-design - 为像 Yelp 或 eBay(许多类别和子类别)这样的网站设计数据库和关系的最佳方法是什么?

他们是否有一个针对所有类别的表格和一个针对所有子类别的表格(以及另一个针对子子类别的表格,依此类推),还是什么?所有级别如何相互交流?

我是一个新手,开始从事一个可能具有这种复杂程度的项目,我很难理解这一点。

我正在使用 Rails,但我也很欣赏数据库模式的答案、进一步阅读的指针等。

0 投票
2 回答
795 浏览

ruby-on-rails - Rails 与相同模型的关联

我有两个具有以下关联的类:

请注意,受理人和技术人员字段是指用户类型的对象。这些关系在模型中应该如何?

0 投票
1 回答
270 浏览

ruby-on-rails - 克隆会影响 activerecord 回调吗?

我有一系列想要级联销毁的 ActiveRecord 对象,但其中一些对象没有被删除。

基本上我有如下: -

其中 Project 是项目的定义, Task 是该项目上的任务的定义, Schedule a has_many :through 将原始项目链接到另一个项目,这是原始项目的计划。

当我创建一个日程表时,我正在对原始项目进行深度克隆(即日程表是原始项目的克隆,日程表上的每个任务都是原始日程表上的任务的克隆)。

当我执行 schedule.destroy 时,我希望计划项目及其所有相关任务都被删除。但是,仅删除了计划项目,保留了计划任务。

这不是缓存问题,因为记录仍在数据库中。此外,在数据库中肯定有单独的任务被创建,日程 ID 作为项目 ID,它们自己的唯一 ID。

回调仍然会在克隆对象上触发吗?我在这里错过了一个技巧吗?

0 投票
2 回答
1188 浏览

ruby-on-rails - 在内存中更新预先加载的关联

在我当前的 Rails 应用程序中,我将大量数据从数据库中提取到内存中,以便我可以启动一个长时间运行的后台任务,我不想每 5 秒访问一次数据库。

这一切都很好,但我有一些不雅的代码,如果可能的话,我想去掉它们。

例如,我有一个用户模型,并且用户模型可以以联系人的形式链接到其他用户模型,而联系人又可以链接回第一个用户模型,依此类推。建模如下(感谢 Milan Novota 早期的帮助):-

所以现在我可以输入

并获取用户 a 的所有联系人。现在假设我想通过用户 a 获取用户 b 的联系人(想不出我为什么会这样做,但这只是一个例子!)

现在我可以得到用户 a 的名字(以一种复杂的、迂回的、从未在现实世界中使用的方式)

到目前为止,一切都很好。现在我更改用户 a 的名称

如果像以前一样从数据库中再次访问用户 a 的名称,我会得到

但是,如果我渴望加载并将这个值保存在内存中,我会得到

但执行以下操作给了我正确的答案

很明显,预加载为原始用户和从 ContactRecord 对象预加载的用户创建不同的用户对象。

所以(最后!)我的问题是:-

目前,我已经通过使用来解决这个问题

(其中@users 是预先加载的用户对象列表)。有没有办法可以更新预先加载的用户对象?

请注意: -

a)我正在使用以下内容进行急切加载

b) 显然这不是我正在使用的实际代码,但为了显示该代码,会有更多的解释和说明,我想我已经让你厌烦了!相信我,我使用的真实示例确实需要这种结构才能正常工作,尽管看起来很奇怪!;)

c) 我可能在重构示例时引入了拼写错误和错误,但请忽略这些。我只需要知道是否可以在不访问数据库的情况下重新加载热切的用户。

提前谢谢了!

更新:如下所述,模型数据在流程运行结束之前不会保存到数据库中,因此重新加载将不起作用,因为数据库中的数据不会改变。

0 投票
1 回答
1474 浏览

ruby-on-rails - 为什么 Association.build 不会将 parent_id 分配给它的孩子?

我有以下型号:

计划中.rb

在ticket.rb中

在控制器中执行以下代码时

保存失败,错误消息为票证:计划不能为空。(计划有效。)

0 投票
3 回答
5127 浏览

ruby-on-rails - 查找没有关联 has_many 对象的所有对象

在我的在线商店中,如果订单处于“授权”状态并且还没有任何关联的发货,则该订单已准备好发货。现在我正在这样做:

有没有更好的办法?