问题标签 [polymorphic-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 投票
3 回答
5170 浏览

ruby-on-rails - 在 ActiveRecord 中急切加载多态关联

这是我第一次使用 Rails,我想知道是否可以在一个 SQL 查询中加载一个多态关联?它们之间的模型和关联足够基本:资产模型/表可以通过多态关联来引用内容(图像、文本或音频),即

图像、文本、音频定义如下:

当我尝试加载图像时,这样说:

它指定了两个查询,一个用于检索图像,另一个用于检索资产(仅供参考,如果我指定 a 也会发生这种情况:joins)。根据我的理解,ActiveRecord 这样做是因为它不知道 Image 和 Asset 之间存在一对一的关联。有没有办法强制加入并一次性检索 2 个对象?我也尝试过将 join 与自定义选择一起使用,但我最终不得不手动创建 ActiveRecord 模型及其关联。

ActiveRecord 是否提供了一种方法来做到这一点?

0 投票
1 回答
1088 浏览

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

我正在尝试关注Ryan Bates 截屏视频,但收到一条错误消息。我做了以下事情:

1) 创建表

2) 设置模型

3)更改控制器显示动作

4) 向模板views/categories/show.html.erb 添加表单

5) 之后我通过访问 /categories/my-category-permalink 收到错误消息

你能帮我理解我做错了什么吗?在原始截屏视频中,Ryan 使用嵌套关联通过 /categories/permalink/comments 访问评论,但我不需要。我想直接从我的多态对象中写评论。谢谢

0 投票
1 回答
1542 浏览

ruby-on-rails - 多态嵌套形式导致 AssociationTypeMismatch

楷模:


经销商控制器:


错误信息:

ActiveRecord::AssociationTypeMismatch in Admin/dealersController#create User(#41048900) 预期,得到 HashWithIndifferentAccess(#23699520)

请求参数:

我想我的问题是 Rails 不会将请求哈希中的“用户”哈希转换为用户对象——但是为什么以及如何让 Rails 这样做呢?

0 投票
1 回答
289 浏览

ruby-on-rails - 当 super 是子类的 FK 时在 db 中设置多态关联?

使用类表继承,建议子类引用超类,而不是相反。通常在 Rails 中,多态关联在另一个方向上工作——超类是指子类。

受到推崇的

典型的 Rails 多态关联

我喜欢推荐的方法是我可以取消不匹配的键。也就是说,给定的汽车及其超级车辆共享相同的 id。

在我的特定实例中,我可能会支持多重继承,因此,例如,我可以拥有一辆混合动力汽车。

问题:

  • 您将如何设置 ActiveRecord 关联...

    • 如果一辆车只能有一个子类?

    • 如果一辆车可以有很多子类?(我在这里看到的问题是,通过不指定特定的 subclass_type 关联如何知道要命中哪个表。我猜他们不会,因此必须命中所有可能的表。所以也许交集表在这里会有所帮助。 )

  • 这是一个与 ActiveRecord 一起使用的好设计模式,还是它与 Rails 的背道而驰,以至于我们应该避免它?

0 投票
3 回答
403 浏览

ruby-on-rails - 如何定义以两种不同方式相互关联的两个模型之间的 ActiveRecord 关系?

在我的应用程序中,我有 User、Video 和 Vote 类。用户和视频可以通过两种不同的方式相互关联:一对多或多对多。前者是用户提交视频时(一个用户可以提交多个视频)。后者是当用户对视频进行投票时(用户通过投票拥有许多视频,反之亦然)。这是我的代码,它不起作用(我认为 - 我可能在视图中做错了什么)。请帮助我理解构建这些关联的正确方法:

0 投票
1 回答
308 浏览

ruby-on-rails - 属于准STI对象的多态对象:object_type不正确

考虑:

编辑:我在那里困惑了一段时间。这不是真正的 STI,它只是继承,就像Employee它自己的表一样。

谢谢!

0 投票
2 回答
4925 浏览

mysql - 动态外键 - 如何实现?

I have 4 tables (appointed, class, elected, status) that I want to cross reference into a single table's (members) column. 4 个表的值是基于历史表 (members_history) 的时间敏感的。所需结果是查询应输出所有成员和当前指定的位置或当前选举位置,类和状态,并包括从外来行获得的其他信息。

因此,不仅仅是返回:

id、用户名、密码、salt、name_first、name_last、date_join & date_leave;

查询将返回

id, 用户名, 密码, salt, name_prefix, name_first, name_last, hours_extra, date_join, date_leave, appointed, class, elected& status;

无论添加的列在历史记录中没有当前值,它的结果都应该为 NULL。

现在我想我可以用子查询来做到这一点,但到目前为止我的头一直在敲击键盘。稍后我会再试一次,但在那之前,还有其他人愿意试一试,或者试图为我指明正确的方向吗?

我的 SQL(没有双关语)表的结构如下:

members_history.mid 是 members 表中 id 的 FK,并非每个成员都有历史记录(但最终他们都会有,因为每个成员都必须有一个类和状态)。members_history.value是一个 FK members:{members_history.table}.id;

0 投票
3 回答
21421 浏览

ruby-on-rails - ActiveRecord、has_many :through 和多态关联

伙计们,

想确保我正确理解这一点。并且请忽略此处的继承情况(SentientBeing),而是尝试关注 has_many 中的多态模型:通过关系。也就是说,考虑以下...

在一个完美的世界里,我想,给定一个小部件和一个人,做类似的事情:

但是,当我这样做时,我注意到 widget_groupings 中“grouper”的“type”始终为空。但是,如果我执行以下操作:

然后一切都按我通常的预期工作。我认为我从未见过非多态关联发生这种情况,只是想知道这是否是此用例特有的东西,或者我是否可能正在盯着一个错误。

谢谢你的帮助!

0 投票
1 回答
424 浏览

ruby-on-rails - 另一个方向的Rails多态关系

像这样设置了我的多态关系:

我可以做 Wine.last.reviews 和 Beer.find(3).reviews 等...

我正在努力做的是朝着另一个方向前进,即假设我想找到最后 10 条 Wine 的评论和最后 10 条 Beer 的评论。

0 投票
1 回答
325 浏览

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

如果我有一个属于多态关联(建议)的模型(选择),是否可以以选择的形式创建关联的建议?

本质上,我想要做的是允许用户在投票中创建一个“选择”,潜在的建议是预定义的场地、城市或地区,但也允许自定义自由格式建议的选项(只是文本,而不是我的数据库中存在的预定义实体)。对于场地/城市/地区,只需给用户一个选择选项并将选择与其关联就足够简单了,但是 CustomSuggestion 是否可以动态创建它并将选择与其关联?

我在想我真正想要的是关联是 has_one CustomSuggestion,以允许建立关联,但那将是与 belongs_to :suggestion,:polymorphic => true 不同的关联。

有任何想法吗?

谢谢,埃里克