问题标签 [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 投票
1 回答
323 浏览

ruby-on-rails - Rails 多态关联,一类中有两种关联类型

考虑一个类:

问题是,当我使用 is 添加新投票时@link.link_votes << Vote.newvote_subject_type'Link'希望它可以是'link_votes'或类似的东西。这是 AR 限制还是有办法解决这个问题?

我实际上找到了一个相关的答案,但我不太确定它说的是什么:多态关联与同一模型上的多个关联

0 投票
2 回答
4868 浏览

ruby-on-rails - rails 多态关联(遗留数据库)

我使用的是旧数据库,因此我无法控制数据模型。他们使用很多多态链接/连接表,像这样

其中obj_name是表名,obj_r_ident是标识符。因此,链接报告将按如下方式插入:

然后人 1 将有 2 个链接的报告,1 和 2。

我可以理解拥有这样的数据模型可能带来的好处,但我主要看到一个很大的缺点:使用约束不可能确保数据完整性。但是,唉,我不能再改变了。

但是要在 Rails 中使用它,我正在研究多态关联,但没有找到解决这个问题的好方法(因为我无法更改列名,也没有轻易找到解决方法)。

不过,我确实想出了一个解决方案。请提供建议。

这可行,但我想知道是否会有更好的解决方案,使用多态关联。

0 投票
2 回答
28373 浏览

mysql - MySQL - 条件外键约束

我的应用程序中有下comments表:

该表的想法是存储我的应用程序各个部分的评论 - 它可以存储博客文章的评论,即:

用户图片:

等等。

现在,有没有办法强制对此类数据进行 FOREIGN KEY 约束?

即评论表中的类似内容:

0 投票
2 回答
1425 浏览

ruby-on-rails - Rails 多态关联和路由

我有一个模型,报告,它是多态的。我网站上的很多项目可能有很多。

我想有一个通用控制器来发布它。它是一个非常简单的模型,只有一个文本消息和关联。

在我的路线中,我正在做类似的事情

但在我的报告控制器中,我想从它的来源中得到关系。

像:

这可能吗?

我怎样才能得到reportable_class 和reportable_id?

当它来自用户控制器时,我可以得到 params[:user_id],或者当它来自帖子时,我可以得到 params[:post_id]。我可以为所有关系做一个案例,但这似乎根本不是一个干净的解决方案......

具有多态关联将是最好的,有什么方法吗?

0 投票
3 回答
9610 浏览

ruby-on-rails - ActiveRecord::EagerLoadPolymorphicError: 不能急切加载多态关联

尝试对帐户处于活动状态的交易进行汇总。

因此,经过一番阅读,我遇到了这个问题:原因是父模型的类型是列值,因此不能将其对应的表名放在该查询的 FROM/JOIN 子句中。表名是银行账户和信用卡,这是否意味着它们应该是单数?account_type 也是一个字符串,可以是 Bankaccount 或 Creditcard 以反映模型,但它应该是表名吗?

0 投票
1 回答
594 浏览

ruby-on-rails - Rails 多态关联 - 验证错误渲染父显示操作与 Flash 消息

我有文章、个人资料和评论。文章/个人资料和评论之间存在一种称为可评论的多态关联。

成功创建新评论后,我会返回可评论的父对象,并带有一个成功的 flash,我想对验证错误的相应错误 flash 做同样的事情。

我应该传递什么来渲染?

我想我可以通过获取可注释的类名并将其小写来构建路径……但这似乎很尴尬。

0 投票
2 回答
1923 浏览

language-agnostic - 如何处理 ERD(表)设计中的“或”关系?

我正在为个人项目设计一个小型数据库,其中一个表称为 table C,需要有两个表之一的外键,称为AB,不同的条目。实现这一点的最佳方法是什么?

到目前为止的想法:

  • 使用连接到这两个表的两个可为空的外键字段创建表。
    • 可能有一个触发器来拒绝插入和更新,这将导致其中 0 或 2 个为空。
  • 具有相同数据的两个单独的表
    • 这打破了关于复制数据的规则。

解决这个问题的更优雅的方法是什么?

0 投票
1 回答
1541 浏览

ruby-on-rails - 使用 has_many 构建多态模型控制器路径

我有一个多态模型评论,它可以与许多类型的评论相关。例如,在我的溃败中,我有:

一切正常,唯一的问题是生成路径。我在我的视图/控制器中有 @commentable 项目,我从 before_filter 检索。

指向 [@commentable, @comment] 的链接可以正常工作,例如表单、显示或销毁。但是指向 new 和 edit 的链接很乱……例如,comments_path(@commentable, @comment) 不起作用。

我怎样才能在我的视图中构建这个动态路径?

尤其是 edit_ 和 new_ 路径

0 投票
2 回答
441 浏览

database - 一组外键,其中除了一个之外都是 NULL

在表中使用一组外键的技术的名称是什么,除了一个外键对于给定的行都是 NULL?

换句话说,每一行都需要一个外键来指向 n 个不同的可能表中的一个(并且只有一个),因此您实际上拥有所有必需的外键,但除了一个之外,所有外键都是 NULL。

(Django 的用户可能会认为这是使用通用外键的替代方法)

0 投票
2 回答
4321 浏览

ruby-on-rails - Rails 类名称/类型不适用于多态 has_many :通过

我有一个管理借方和贷方的发票系统。基本上,发票金额是通过其借方的总和获得的,余额是通过将其贷方的总和减去总金额得出的。

我用四个模型做这个。

  1. 发票
  2. 订单项
  3. 借方
  4. 信用

它的工作方式是通过具有称为可记录的多态关联的连接模型(行项)。乍一看,一切似乎都正常工作。但是,检查行项目显示虽然 recordable_id 显示正常,但 recordable_type 为 nil。

下面是代码的分解:

谁能在这里指出我正确的方向?