2011-03-01 101 views
1

我将一个php项目转换为ruby on rails。以前的项目使用mysql作为数据库,rails项目也会这样做。建模设计问题(Ruby On Rails)

在该项目中有一个“步骤”的概念,这是一个课程可以有很多的概念。一步有五种类型中的一种。 (测验,视频,文本..等等)显然,每一步所需的数据类型是不同的。

它以前建模的方式是将所有步骤存储在同一个表中,并有一个包含该步骤的序列化php对象的字段。我认为这是不好的,因为几个原因......你可以'真正地查询序列化数据,并且它使添加数据或非常困难地改变对象的结构。

将数据模型化为数据库而不是对象会更有意义吗?

回答

1

一般是。 Rails有两种可能的方法来模拟这种:

  1. 单表继承 - 几种模式,从一个共同的祖先,存储在同一个表继承。如果你的步骤真的很相似,那就太好了。在这里你可以在父模型上调用has_many

  2. 多态关联 - 联想宏有一个选项:polymorphic它可以让你有一个关联不同的模型(每个人都可以有它自己的表)。如果你的步骤没有共同之处,我会这样做。

+0

感谢您的回复 – 2011-03-01 14:44:57

+0

我对此有了更深入的了解,我不明白它是多态的。 http://stackoverflow.com/questions/5156948/rails-am-i-modeling-this-correctly – 2011-03-01 16:00:48