问题标签 [single-table-inheritance]

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 回答
1032 浏览

ruby-on-rails - 单表继承 (STI) 列关联

使用单表继承时,是否必须小心不要填充特定于不同模型的列?有没有办法指定每个模型使用哪些列?

0 投票
3 回答
1153 浏览

ruby-on-rails - Rails 中的 STI 继承。查找问题

由于我的继承结构,我在搜索 STI 表中的记录时遇到问题




问题是 find 不适用于 AuthUser 模型。该查询正在寻找类型“AuthUser”并且不包括其他三种可能性。

编辑:在玩这个时它开始工作,但只适用于 ClientAdmin 和 FieldUser 所以似乎这个功能应该内置。但现在它又回到了原来的问题

0 投票
1 回答
1724 浏览

ruby-on-rails - STI 和 has_many 与“类型”列作为键的关联

我正在使用单表继承来管理不同类型的项目。我决定存储一些与每个项目类型相关的信息。所以我用“model_type”字段作为主键创建了新表“project_types”。主键值是“项目”表的“类型”字段的值。问题:当我试图与 Project 对象 ProjectTypes 对象关联时,它总是返回 null。

获取与 ProjectTypes 项目关联的项目是可以的。有没有办法让它正常工作?

楷模:

迁移:

0 投票
2 回答
2486 浏览

ruby-on-rails - 在 Rails 中创建单表继承记录

我正在为我的应用程序使用单表继承。我的多态类型是维护,现在只有一个子类型,名为 OilChange。我在控制器的 create 方法中创建记录时遇到问题。这是代码。

params[:maintenance] 散列有键 {:name, :type}。我可以通过如下打印它们来验证它们的存在和值

如果我为 :type 键的值传入“OilChange”,则维护记录的类型是维护而不是 OilChange。我可以通过在 REPL 控制台中查找记录来验证这一点。类型字段为零。通过添加以下行,我可以让它像我想要的那样工作。

但这很丑陋。我想知道的是为什么 create 方法没有像 name 字段那样设置 type 字段?

您在我的 schema.rb 中看到的两种类型如下所示

我的模型看起来像这样。

蒂亚!

0 投票
5 回答
7148 浏览

ruby-on-rails - Rails attr_accessible 不适用于 :type?

我尝试在表单中设置单表继承模型类型。所以我有一个属性选择菜单:类型,值是 STI 子类的名称。问题是错误日志不断打印:

警告:无法批量分配这些受保护的属性:类型

所以我在模型中添加了“attr_accessible:type”:

不会改变任何东西,在控制器中调用 .update_attributes() 之后 ContentItem 仍然有 :type=nil 。知道如何从表单中批量更新 :type 吗?

0 投票
4 回答
8010 浏览

single-table-inheritance - Ruby on Rails 中的多表继承与单表继承

在过去的几个小时里,我一直在努力思考我应该走哪条路。我有一个通知模型。到目前为止,我一直使用 notification_type 列来管理类型,但我认为为通知类型创建单独的类会更好,因为它们的行为不同。

目前,可以通过 3 种方式发送通知:短信、推特、电子邮件

每个通知将具有:

似乎 STI 是一个不错的候选人,对吧?当然 Twitter/SMS 不会有主题,Twitter 不会有 sent_people_count, valediction。我想说在这种情况下,他们共享大部分领域。但是,如果我为 twitter 添加一个“reply_to”字段并为 DM 添加一个布尔值怎么办?

我的观点是,现在 STI 是有道理的,但在这种情况下,我将来可能会因为不只是从 MTI 开始而自责吗?

更复杂的是,我想要一个 Newsletter 模型,它是一种通知,但不同之处在于它不会使用 event_id 或 Deliver_by。

我可以使用大约 2/3 的通知基类字段来查看通知的所有子类。STI 是不是很简单,还是我应该使用 MTI?

0 投票
2 回答
250 浏览

ruby-on-rails - many_to_many, sti 并且会分页

我有以下代码

好的,看起来不错。我正在尝试从类别中获取所有 NewsArticle

我明白了

我能做些什么来解决这个问题?

0 投票
2 回答
544 浏览

ruby-on-rails - Rails:如何将数据锁定到来自许多系统表的记录中?

我目前正在构建一个基于保险的 Rails 应用程序。有一个管理部分,员工可以在其中控制系统表,主要是下拉列表中显示的内容,尽管有些更复杂,有自己的关联。此应用程序中的主要模型是保单,这需要保存/链接到许多其他表格中的信息,例如索赔人、被告、保险级别、用户等。每个表格都可能有自己的关联,例如链接到反过来链接到地址等的人。

保单链接到的更复杂的表格之一是总体承保水平,其中包含确定保费、付款等的财务信息。

创建策略后,我需要对所有数据进行快照。如果稍后管理员用户修改了策略,则需要进行版本控制,即使是在相关数据上也是如此。

我想知道是否有人对此问题有任何通用解决方案。目前我正在考虑孤立记录,单表继承,保留系统表链接但使该数据不可编辑,将数据处理到策略表中的字段中(使其成为编辑时的文本框,选择框create) 或创建两张表,一张用于实时,一张用于模板。

到目前为止,我能想到的最好的方法是根据应用程序需求收集上述不同方法。这一定是应用程序中的普遍问题!?您对如何解决此类问题有更好的想法/建议吗?

0 投票
2 回答
2238 浏览

entity-framework - Entity Framework 4 中 POCO 实体的每个层次结构继承表

一旦 v4 发布,我们的组织正在寻求对 Entity Framework 进行标准化。因此,我正在研究如何使用 POCO 支持将使用 NHibernate 进行持久性的应用程序迁移到 EF4。在一些地方,我们使用单表继承(也称为 Table Per Hierarchy)。我无法使用以下方法使其工作。

支付(基类[应该是抽象的,但也有问题]) CreditCardPayment(具体实现) ACHPayment(具体实现) CheckPayment(具体实现)

现在,我只使用基类属性映射它们。所有这些类都在同一个命名空间中。他们在数据库中有一个称为 PaymentTypeId 的鉴别器,因此 Payment 映射具有“当 PaymentTypeId = 0”的条件。每个子类具有相同的条件,但具有不同的值(即 CreditCardPayment = 1 等)。

当我尝试使用 DataContext.Payments.ToList()(DataContext 继承自 ObjectContext)加载所有付款的列表时,我收到以下异常:

“找不到标识为‘DataLayer.DataModel.CreditCardPayment’的类型的对象映射。”

我不知道这意味着什么,因为 POCO CreditCardPayment 类与 POCO Payment 类位于同一个命名空间中(实际上在同一个文件中)。

我错过了什么?

0 投票
2 回答
498 浏览

ruby-on-rails - 两个单表继承模型之间的关系

我有以下两种型号

我想要一个联系人,无论是公司还是个人,都有很多联系人字段(地址和电话)......那么我应该把那些有很多并且属于的联系人放在哪里?谢谢