如何使用Mixin和ActiveRecord:基于一起

时间:2011-06-27 06:07:06

标签: ruby-on-rails database oop mixins

在RUby on Rails中考虑这个简单的应用程序:

学生&老师扩展了人。 人有2个属性,名称&年龄。 学生还有1个额外的房产,等级。 老师有1个额外的财产,薪水。

我想存储学生&单独的数据库表中的教师信息。我想利用RoR的实用程序类ActiveRecord:Base来检索这些模型的数据。由于预计Person不会被实例化,因此我可以将其与Student& Teacher如下:

class Student < ActiveRecord:Base
include Person
end

module Person
end

问题:

  1. 这是正确的实施方式吗?
  2. 如何在不创建名为persons的数据库表的情况下实现此目的?我只想生成2个表,即studentsteachers,两者都应该具有上面提到的3个属性。

1 个答案:

答案 0 :(得分:1)

人不必是模​​型 - 它可以是库/模块(然后根据您的示例混合)。你会在RAILS_ROOT / lib中保留它。 您的学生和教师课程可以是模型(使用AR :: Base),而这个人可以只是两者使用的一堆常用方法。

或者,如果您的子类更复杂 - 请查看“单表继承” - 其描述超出了此答案的范围...但您可以谷歌搜索它。