以“不寻常的方式”管理类的关联模型

时间:2011-05-03 13:34:43

标签: ruby-on-rails ruby ruby-on-rails-3 class associations

我正在使用Ruby on Rails 3,我有一个类List和一些其他子类,以“不常见的方式”“组合”List。也就是说,我有一个List模型,其中包含以下属性:

# LIST ATTRIBUTES
id       : integer
kind_of  : string
class_id : integer

kind_of值可以是“school”,“house”,...并且每个kind_of我都有一个班级ListSchoolListHouse,... class_id指的是kind_of“school”,“house”的子类的主键,...(因此class_id可以有多个相等的值,但每个引用的值都是ListSchool到特定班级ListHousekind_of,...取决于List值。

简而言之,我想引用一个独特的类(类ListSchool,以便覆盖所有类型的子类({ {1}},ListHouse,...)基于父类的属性值(类kind_of的{​​{1}})。

如何在关联语句List中编写关联代码以关联这些模型(可能使用:conditions => "kind_of = 'school'":conditions => "kind_of = 'house'",... )的?你对这种“分类”方法有什么建议?

1 个答案:

答案 0 :(得分:0)

这听起来非常像您正在寻找单表继承(STI)。 Rails支持开箱即用;您需要做的就是在type类上定义List列,然后从ListSchool继承ListHouseList。不需要带有STI的kind_ofclass_id列。

网上搜索'rails sti'会提供一些好的资源,包括this StackOverflow question