我正在使用Ruby on Rails 3,我有一个类List
和一些其他子类,以“不常见的方式”“组合”List
。也就是说,我有一个List
模型,其中包含以下属性:
# LIST ATTRIBUTES
id : integer
kind_of : string
class_id : integer
kind_of
值可以是“school”,“house”,...并且每个kind_of
我都有一个班级ListSchool
,ListHouse
,... class_id
指的是kind_of
“school”,“house”的子类的主键,...(因此class_id
可以有多个相等的值,但每个引用的值都是ListSchool
到特定班级ListHouse
,kind_of
,...取决于List
值。
简而言之,我想引用一个独特的类(类ListSchool
),以便覆盖所有类型的子类({ {1}},ListHouse
,...)基于父类的属性值(类kind_of
的{{1}})。
如何在关联语句List
中编写关联代码以关联这些模型(可能使用:conditions => "kind_of = 'school'"
,:conditions => "kind_of = 'house'"
,... )的?你对这种“分类”方法有什么建议?
答案 0 :(得分:0)
这听起来非常像您正在寻找单表继承(STI)。 Rails支持开箱即用;您需要做的就是在type
类上定义List
列,然后从ListSchool
继承ListHouse
和List
。不需要带有STI的kind_of
或class_id
列。
网上搜索'rails sti'会提供一些好的资源,包括this StackOverflow question。