Rails / ActiveRecord - 单表继承 - 覆盖类型字段

发布于 2024-12-10 06:10:35 字数 81 浏览 0 评论 0原文

是否可以覆盖该列的名称?我正在更改应用程序的某些部分以使用 STI,并且还有其他字段正在使用。我也希望它是整数类型。

有什么想法吗?

Is it possible to override the name of this colummn? I'm changing some parts of my applications to use STI and there are other fields in use for. I would also prefer it to be of type integer.

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

·深蓝 2024-12-17 06:10:35

根据 ActiveRecord::ModelSchema (3.2) 中的代码,set_inheritance_column 方法现已弃用,您应该使用 self.inheritance_column = column

According to the code in ActiveRecord::ModelSchema (3.2), the set_inheritance_column method is now deprecated and you should use self.inheritance_column = column

八巷 2024-12-17 06:10:35

在现代 Rails 中,您可以使用 inheritance_column= (如 panckreous 指出):

class M < ApplicationRecord
  self.inheritance_column = 'whatever'
  #...
end

在旧版本的 Rails 中(即最初编写此答案时周围的情况),您可以使用 [< code>set_inheritance_column] 更改名称:

将要使用的继承列的名称设置为给定值,或者(如果该值为 nilfalse)给定块返回的值。

该列仍然必须是字符串(或 text),因为 AR 想要放置 其中的类名

单表继承

Active Record 允许通过将类名称存储在默认情况下名为“type”的列中来进行继承。

In modern Rails, you'd use inheritance_column= (as panckreous noted):

class M < ApplicationRecord
  self.inheritance_column = 'whatever'
  #...
end

In older versions of Rails (i.e. what was around when this answer was originally written), you'd use [set_inheritance_column] to change the name:

Sets the name of the inheritance column to use to the given value, or (if the value is nil or false) to the value returned by the given block.

The column still has to be a string (or text) as AR will want to put the class name in there:

Single table inheritance

Active Record allows inheritance by storing the name of the class in a column that is named “type” by default.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文