问题标签 [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.
c# - 使用带有完整 FindAll 的 STI 和 ActiveRecordBase<>
是否可以使用单表继承的通用支持,并且仍然能够 FindAll 的基类?
作为一个额外的问题,我也可以使用 ActiveRecordLinqBase<> 吗?我确实喜欢这些查询。
更多细节:假设我定义了以下类:
这适用于大多数情况。我可以做这样的事情:
但有时我想要所有的公司。如果我不使用泛型,我可以这样做:
有没有办法编写一个返回 ICompany 数组的 FindAll,然后可以将其类型转换为它们各自的类型?
就像是:
或者,也许我打算实现通用支持都错了?
ruby-on-rails - 组织很多在 rails 中使用 STI 的模型
我有一个场景,我将创建大量使用 STI 的模型,我想知道组织它的最佳方法是什么。我已经有其他使用 STI 的模型,我真的不想在我的模型文件夹中添加任何文件。有什么方法可以创建一个文件夹并在那里使用 STI 添加模型(可能有超过 40 个 b/c 每个使用自己的方法来抓取不同的站点,但它们都保存相同的数据)?这似乎是最好的,或者我可以将它们全部添加到一个文件中,但我宁愿将它们分开。
ruby-on-rails - 具有 has_many、belongs_to 关联和 STI 的模型的 ActiveRecord 验证
我有四个模型:
- 用户
- 奖
- 徽章
- 游戏周刊
关联如下:
- 用户有很多奖励。
- 奖励属于用户。
- 徽章有许多奖项。
- 奖品属于徽章。
- 用户有很多 game_weeks。
- GameWeek 属于用户。
- GameWeek 有很多奖项。
- 奖项属于 game_week。
因此,user_id、badge_id 和 game_week_id 是奖励表中的外键。
Badge 实现了一个 STI 模型。假设它有以下子类:BadgeA 和 BadgeB。
需要注意的一些规则:
对于 BadgeA,game_week_id fk 可以为 nil,但对于 BadgeB,不能为 nil。
以下是我的问题:
- 对于 BadgeA,我如何编写只能授予一次的验证?也就是说,用户不能拥有多个——永远。
- 对于 BadgeB,我如何编写一个验证,证明它每周只能获得一次?
ruby-on-rails - Rails:单表继承和模型子目录
我有一个使用单表继承的纸牌游戏应用程序。我有一个, 和一个带有 columnclass Card
的数据库表,以及一些子类(包括and ,为了论证)。cards
type
Card
class Foo < Card
class Bar < Card
碰巧的是,Foo
是游戏原始印刷中的Bar
牌,而是扩展包中的牌。为了使我的模型合理化,我创建了一个目录结构,如下所示:
并修改 environment.rb 以包含:
但是,当我的应用从数据库中读取卡片时,Rails 会抛出以下异常:
ActiveRecord::SubclassNotFound (The single-table inheritance mechanism failed to locate the subclass: 'Foo'. This error is raised because the column 'type' is reserved for storing the class in case of inheritance. Please rename this column if you didn't intend it to be used for storing the inheritance class or overwrite Card.inheritance_column to use another column for that information.)
是否有可能完成这项工作,或者我注定要使用平面目录结构?
ruby-on-rails - 如何在 Rails 中为单表继承创建控制器?
我正在设置单表继承,使用 ContactEvent 作为 ContactEmail、ContactLetter 和 ContactCall 都将继承的模型。
但我对如何创建路由和控制器感到困惑。
例如,假设我想创建一个类型为 Email 的新 ContactEvent。
我想要一种方法来执行以下操作:
这将采用来自联系人模型和电子邮件模型的实例。
在里面,我想contact_event_controller 需要知道......
只是不确定这是如何工作的......
ruby - 在查询数据库时让数据映射器忽略“类型”
我的应用程序中有一个单表继承结构,Admins 和 Mods 扩展了一个 User 类。该表使用一个鉴别器值,因此每条记录的类型都是“admin”或“mod”
在寻找用户(登录时)时,我想写以下内容:
但是,这会创建 SQL,其中包括
这意味着找不到记录。但是,如果我输入
我得到了用户(如果他们是管理员)。
由于仍然创建了“类型”IN(“用户”),因此我也尝试了以下操作但无济于事:
提前感谢您对此的任何帮助
java - 如何在运行时获取 DiscriminatorValue
我们有以下课程
和这个
ApplicationProcess
现在我需要在运行时知道DiscriminatorValue
AP or APS
. 由于这是由 jpa 自动处理的,因此我无法获取此值。
我们正在调用一个带有ApplicationProcess
as 参数的方法,我想避免使用instanceof
它来检查它是什么类型。如果我能做类似的事情会更酷
ruby-on-rails - 使用单表继承验证多个子类之间的唯一性
我有一个具有许多 CardSet 的 Card 模型和一个通过 Membership 模型具有许多 Card 的 CardSet 模型:
我还有一些使用单表继承的上述子类:
和
以上所有内容都按我的意愿工作。我想弄清楚的是如何验证一张卡片只能属于一个扩展。我希望以下内容无效:
然而,GameSets 应该允许这种行为:
我猜想某处需要一个 validates_uniqueness_of 调用,但我不知道该把它放在哪里。有什么建议么?
更新 1
我按照建议修改了扩展类:
这行得通!谢谢J.!
更新 2
我说话有点太快了。在我用新卡更新扩展之前,上述解决方案效果很好。它错误地将后续#valid?
检查识别为错误,因为它在数据库中发现了自己。#new_record?
我通过在验证方法中添加检查来解决此问题:
ruby-on-rails - Rails 对象继承与 belongs_to
我在报告和图表之间有一个简单的 has_many/belongs_to 关系。我遇到的问题是我的图表模型是一个有孩子的父母。
所以在我的报告模型中,我有
而我的 Chart 模型是父模型,其中 Pie、Line、Bar 都继承自 Chart。我不确定belongs_to :report 属于图表模型或图表模型的子项。当我尝试访问 chart.report 时出现错误,因为该对象的类型为“Class”
#< 类:0x104974b90> 的未定义局部变量或方法“报告”
图表模型使用 STI,因此它的拉动说..来自图表表中 chart_type 列的“性别”..我错过了什么?
编辑
我正在(使用 STI)实例化 Gender 或 Sex 类型的对象。希望这会有所帮助。
我有一种感觉,它是由
因为当提交它的实际 params[:chart] 它的 params[:gender] 或 params[:sex]
ruby-on-rails - 如何为 Rails 模型中的 STI 列选择输入?
我在列上有一个具有单表继承的模型type
:
我想<select>
在新页面和编辑页面上提供一个下拉列表:
这给了我以下错误:
我阅读了一个使用别名的建议#type
,因为 Ruby 认为保留字与#class
. 我都试过了
和
都没有奏效。有什么建议么?奇怪的是,它在我的机器上运行良好(RVM 上的 MRI 1.8.6),但在登台服务器上失败(MRI 1.8.7 不在 RVM 上)。