问题标签 [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 回答
147 浏览

ruby-on-rails - 这是rails中的错误吗?关于单表继承;




然后



我需要 Sub.all 来显示其所有子类的项目,如何制作?这是一个错误吗?


我再次测试,当表中没有指定“类型”列时它确实有效,但在使用“类型”列时失败。


只有一个名为“父母”的表,其中有“类型”列;


我的环境:rails-3.0.0.beta3,ruby-1.9.2-pre

0 投票
2 回答
6546 浏览

ruby-on-rails - 在 Ruby on Rails 中,如果我们生成了一个模型“Animal”,现在想要有“Dog”,我们应该怎么做呢?

比如说,如果我们生成了一个模型

现在我们想创建其他模型来继承它(例如Dog和Cat),我们应该rails generate model再次使用还是自己添加文件?如果我们使用,我们如何指定 Dog 应该从 Animal 继承rails generate model

我认为如果我们使用rails generate model而不是自己添加模型文件,也会为我们创建单元测试文件和夹具文件。还添加了一个迁移文件,除非是使用 MongoDB,否则不会有迁移文件。

0 投票
1 回答
416 浏览

ruby-on-rails - 多态关联在这里合适吗?

这就是我的想法:

我很确定这是完全错误的。我正在尝试做的似乎与我所看到的多态关联的相反。例如,来自 Rails 指南:

这里“拥有”模型(产品或员工)可以是许多类之一。我想让“拥有”模型成为许多类之一,所有这些类都从另一个类继承基本行为。此外,所有这些子类的行为都大相径庭,以至于 STI 效率极低。我在这里很迷茫......我很感激你能提供的任何帮助!

编辑:只是为了澄清我想要做什么......我有一个名为 Widget 的“拥有”类。小部件代表类似于非常简单的网络应用程序的东西。每个小部件都可以通过几种不同布局中的一种来表示。因此,我定义了这些不同的布局类。布局在外观和行为上可能有很大差异,但它们确实具有一些共同的功能。因此,我想将这种常见行为提取到它们可以继承的 WidgetLayout 类中。最后,任何 Widget 都可以与一个“特定”布局相关联(无论是 Informational、OneWayCommunication 等)。我只是不确定应该如何构建此设置。

编辑(最后一个,我希望!):啊,再看你的例子,我明白了。我唯一缺少的是让布局继承常见行为。那么,这样的事情会起作用吗?

0 投票
1 回答
1230 浏览

ruby-on-rails - 多少课太多了?导轨 STI

我正在开发一个非常大的 Rails 应用程序。我们最初并没有使用太多继承,但我们从顾问那里获得了一些令人大开眼界的经验,并且正在寻求重构我们的一些模型。

我们的应用程序中有很多以下模式:

这也导致了视图、助手和 GraphSetting 模型本身中的大量条件。这些都不好。

一个简单的重构,我们摆脱了 GraphType 以支持使用更像这样的结构:

现在这对我来说非常有意义,简化了测试,删除了条件,并使以后的国际化更容易。然而,我们只有 15 到 30 个图表。

我们有一个非常相似的模型(以复杂的为例),大约有 100 种不同的“类型”,并且可能会翻倍。它们都有继承的关系和方法,有些需要覆盖比其他方法更多的方法。这似乎是完美的用途,但很多看起来就像很多。

200 个 STI 课程是不是很多?我们应该看看另一种模式吗?

感谢您的智慧,我会回答任何问题。

0 投票
0 回答
352 浏览

ruby - 加入模型 + STI + 多态关联 - ActiveRecord 不能这样做吗?

问题在底部,但代码描述了大部分内容:)

下面是代码的基础,缩短到它的核心:

这就是您使用它时会发生的情况:

我的问题是,当我从与之关联的子类中创建连接模型时,我如何做到这一点subgroup.images << image,它会说,parent_type: "SubGroup"而不是Group?我一直无法弄清楚这一点。

更新

如果我在 ActiveRecord 核心中更改这一行,它会完美运行:

...这是一个错误吗?

0 投票
1 回答
1308 浏览

ruby-on-rails - 使用外键(ID)的 Rails 单表继承

我必须对关联结构进行建模,并且关联分为部门/细分/部分等。所以我创建了一个简单的实体属性模型:

替代文字

我想使用 rail 的单表继承,但似乎只有在类型列是字符串时才有效。我的问题是如何用我的方法实现这一目标?由于我使用外键作为“类型”,我必须先查询“类型名称”。以前有人做过吗?

0 投票
1 回答
441 浏览

ruby-on-rails - 在父类没有自己的控制器的情况下实现 STI,它只是一个模型,并且与其他模型有关系。导轨 STI

我有以下情况

模型 ABC 没有任何控制器或视图。与 ABC 相关的数据将从 XYZ 视图和控制器中插入。用户为 ABC 设置一个类型值,它可能是 A、B 或 C。

并且根据类型,必须实例化相应的 STI 子类,并且必须适当地保存数据。但是这里的子类没有被实例化,数据被完美地保存了。但是我这样做是错误的,因为我已将子类的代码写入父 STI 类,因为该代码没有在子类中被调用。

请给出建议并提供一些解决方案或教程。

提前谢谢。

0 投票
4 回答
898 浏览

database-design - 单表继承是解决我的 Rails 问题的正确方法吗?

大家好,

我正在使用 Ruby on Rails 开发一个应用程序,我们需要跟踪应用程序将访问的每个用户(例如 Facebook、MySpace、Google、SalesForce、Twitter、WordPress 等)的一堆外部服务代表用户。对于某些服务,我们需要存储(加密的)用户名和密码,对于一些我们需要保存 OAuth 数据,对于一些 OAuth2 数据,等等。随着应用程序的发展,我们将需要支持更多类型的帐户,每个帐户都有自己的一组身份验证数据。

每个用户都可以在应用程序中创建帖子,我们会将这些帖子发送到外部服务,以便为用户发布。然后,我们跟踪对已发布帖子的响应(Twitter 上的转推、Facebook 上的点赞/分享等)。

所以:

我在为我的类型使用单表继承Service(例如WordpressService,、、和简单地序列化一个简单的哈希以保存身份验证数据)和使用传统的规范化方案之间进行辩论,其中每种类型的服务都是它自己的模型和表FacebookServiceTwitterService我希望能够轻松地遍历与用户关联的所有服务,并且发布需要能够与任何类型的服务相关联(例如,发布可能被发送到 WordPress、Facebook 或 Twitter) .

我可以使用传统的标准化方法来实现这种模型关系吗?或者这正是 STI 想要解决的问题?

谢谢。

0 投票
2 回答
497 浏览

ruby-on-rails - 如何为 STI 关联编写单元测试 Ruby on Rails

当需要为 STI 关联编写单元测试时,应该使用哪些步骤。我完全糊涂了。请提供一些建议或一些教程的链接。提前致谢

0 投票
2 回答
3437 浏览

php - 鉴别器列可以成为 Doctrine2 中主键的一部分吗?

我在 Doctrine2 中使用单表继承来存储多个服务的 OAuth 凭据。我想使用服务的 id 作为主键;但是,这并不是所有服务都独一无二的。

我已经将数据库设置为使用鉴别器列和服务的 id 作为主键,但我找不到让 Doctrine 使用鉴别器列作为键的方法(除了鉴别器列)。我正在使用 docblock 注释,如果我将鉴别器列添加为 @Id 字段,则会出现错误:

如果我只将该字段定义为鉴别器列,则任何重叠的服务 ID 都会更新所有匹配的行。

无论如何要使这项工作,除了使用自动生成的值之外?