问题标签 [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.
ruby-on-rails - 处女性病帮助
我正在开发一个赛马应用程序,并且正在尝试利用 STI 来模拟马的连接。一匹马的关系包括它的主人、驯马师和骑师。随着时间的推移,连接可能会因多种原因而发生变化:
- 这匹马被卖给了另一个主人
- 业主更换教练或骑师
- 这匹马被新主人认领
就目前而言,我使用以下表格对此进行了建模:
- 马匹
- 连接(连接表)
- 利益相关者(利益相关者有三个子类:骑师、培训师和所有者)
这是我的课程和协会:
在数据库端,我在连接表中插入了一个类型列。
我是否正确地建模了这个。有没有更好/更优雅的方法。提前感谢您的反馈。
吉姆
ruby-on-rails - 如何覆盖 attr_protected?
我的 STI 实施如下:
我正在为用户创建汽车列表。对于每辆汽车,UI 设置type
与汽车关联的字段和属性。在提交表单时,该type
字段被忽略,因为它是受保护的属性。
我该如何解决这个问题?是否有unprotect
受保护属性的声明方式?
编辑:
这是我当前的问题解决方案:我覆盖了attributes_protected_by_default
模型类中的私有方法。
这将从受保护列表中删除该type
字段。
我希望有比这更好的方法。
ruby-on-rails - 可以让多个 ActiveRecord `belongs_to` 指向同一个类吗?
将一项体育赛事与两支球队联系起来,起初这似乎是有道理的:
但是,我对如何在活动记录模型中将其链接起来感到困扰:
这是最好的解决方案吗?
在对类似问题的回答中,我被指向单表继承,然后发现了多态关联。两者似乎都不适合这种关联。也许我看错了,但我认为没有必要将一支球队分为主队和客队,因为区别只在于比赛的进行。如果我确实使用单表继承,我不希望每个团队都属于一个事件,那么这会起作用吗?
对于我想要实现的目标来说,这似乎是太多的工作。
我还考虑了通过关联的 has_many ,但这似乎是两个,因为我只需要两个团队,但这两个团队不属于任何一个事件。
是否有一种更清晰、更语义化的方式可以在活动记录中创建这些关联?还是这些解决方案之一是最佳选择?
谢谢
ruby-on-rails - Rails 单表继承/子类在父类中查找条件
我有一个名为 Users ( class User < ActiveRecord::Base
) 的表和一个用于 Clients ( class Client < User
) 的子类/STI。
客户端“过滤”按预期工作,换句话说,Client.find(:all) 可以查找所有客户端。
但是,对于用户,我需要过滤结果以仅查找不是客户端的用户(其中类型为空或空白)。
我在我的索引控制器中尝试了以下内容,但无论我为类型添加什么,它都会返回所有用户,无论类型如何。
关于如何让这种情况发挥作用的任何线索?
谢谢!
ruby-on-rails - 嵌套属性可以和继承结合使用吗?
我有以下课程:
- 项目
- 人
- 人员>开发人员
- 人>经理
在Project
模型中,我添加了以下语句:
当然还有课堂上的适当陈述Person
。如何通过该方法将 a 添加Developer
到 a ?以下不起作用:Project
nested_attributes
如您所见,type
属性设置为nil
而不是"Developer"
.
ruby-on-rails - 两个模型,一个 STI 和一个验证
假设我有两个表——产品和订单。为简单起见,假设一次只能购买一种产品,因此没有像 order_items 这样的连接表。所以关系是Product有很多订单,而Order属于产品。因此,product_id 是 Order 表中的一个 fk。
产品表是 STI——子类是 A、B、C。
当用户订购子类产品 C 时,必须在订单模型字段 order_details 和 order_status 上检查两个特殊验证。对于所有其他 Product 子类(即 A 和 B),这两个字段可以为 nil。换句话说,当用户购买 A 和 B 时,不需要对这两个字段进行验证。
我的问题是:
我如何在 Order 模型中编写验证(可能是自定义的?),以便当 Product 子类 C 的 fk_id 保存到订单表时,Order 模型知道只运行 ITS 两个字段的验证 - order_details 和 order_status ?
ruby-on-rails - STI 和多晶型物
我的代码有问题
在尝试获取一些新闻文章的评论时,我在日志中看到了类似
奇怪的是"commentable_type" = 'Post'。怎么了?
PS:Rails 2.3.5 && ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-darwin10]
mysql - 将 STI 添加到现有表
我想使用自定义类型列将 STI 添加到现有表中。我们称这个taste_type 对应的模型是Fruit。
在水果模型中,我有:
在我添加 STI 的迁移中,我有:
当我运行迁移时,我收到以下错误:
知道发生了什么吗?如果我在 Fruit 模型中注释 set_inheritance_column,我可以运行迁移,然后在运行迁移后取消注释。但是,显然,我不想这样做。
ruby-on-rails - 如何返回子对象?
我有 - 我认为 - 是一个简单的问题。这是我的代码:
假设我正确设置了所有 STI,并且表中有多种类型的 Apple 和 Kiwi 记录。从这里...
...我如何从 fruits 数组中返回一组只是 Apples 的数组?
ruby-on-rails - 手机账单建模:我应该使用单表继承还是多态关联?
在我的域中:
- 用户有很多账单
- Bills 有很多 BillItems(因此用户通过 Bills 有很多 BillItems)
- 每个 BillItem 都是以下之一:
- 称呼
- 短信(短信)
- 彩信(彩信)
- 数据
以下是每个 BillItem 的属性(有些是常见的):
替代文字 http://dl.dropbox.com/u/2792776/screenshots/2010-04-13_2146-1.png
我的问题是我是否应该使用单表继承(即,一个带有“type”列的“bill_items”表)或多态性(每个 BillItem 类型的单独表)对这种安排进行建模,以及为什么。