使用整数 ID 类型字段的多态关联
我有一个表 Foo
,它有一个名为 bar
的多态 own_to 关联。 foos
表具有标准的 bar_id
列。但是,我有一个整数 bar_type_id
列,而不是基于字符串的 bar_type
列。此列引用表 bar_types
中的 id
列。 bar_types.name
保存表示特定 bar
实例的类的类的名称。
Rails(理想情况下> = 2.3.10)是否允许这种类型的多态关联?
I have a table Foo
that has a polymorphic belongs_to association called bar
. The foos
table has the standard bar_id
column. However, instead of a string-based bar_type
column, I have an integer bar_type_id
column. This column references the id
column in the table bar_types
. bar_types.name
holds the name of the class that represents the class of the particular bar
instance.
Does Rails (ideally >=2.3.10) allow for this type of polymorphic association?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我们通过在新模块中覆盖
association_class
方法并使用:extend
选项包含它来实现这一点。还创建了一个整数到字符串的映射哈希以使事情变得更容易。在 config/initializers 目录或任何您喜欢的地方,创建一个文件并定义哈希值
INT_OBJECT_TYPE_TO_CLASSNAME = { 0 =>; INT_OBJECT_TYPE_TO_CLASSNAME = { 0 => “项目”,1 => “任务”, 2 => “时间表”}
在 comments.rb 中
We did it by overriding the
association_class
method in a new module and included it using the:extend
option. Also created a integer to string mapping hash to make things easier.In
config/initializers
directory or anywhere you like, create a file and define the hashINT_OBJECT_TYPE_TO_CLASSNAME = { 0 => "Project", 1 => "Task", 2 => "Timesheet" }
In comments.rb
我正在使用由我的一位同事编写的 多态整数类型 gem。在我看来,它比上面给出的示例更容易使用。例如,配置映射后,您将: 更改
为新格式:
I'm making use of the polymorphic integer type gem, written by one of my co-workers. It's slightly easier to use than the examples given above, in my opinion. For example, after configuring the mapping, you change from:
to the new format:
有两种方法可以实现这一点。
第一个很容易:
第二个可能很棘手:
There are two approaches for this.
First is easy:
Second could be tricky:
我不确定,但你可以玩一下
I am not sure, but you can play around