如何使用存储在数据库中的参数构建动态的对象集合

时间:2012-04-06 17:37:13

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord

我正在使用MySQL DB运行Rails 3.2应用程序,我想构建一个动态集合的模型,例如我将其称为Album

一个专辑应该包含另一个模型的多个实例,例如我称之为Item,但我不想将它们静态地与一对多连接表联系起来。

也应该可以定义如下标准:

  • Album包含从开始日期到结束日期的Item
  • Album包含Item s,其中标志XY为“foo”
  • ..

这些标准/参数应该永久存储在数据库中。 Item不应该被链接一次,如果新的Item与参数匹配,则应将Album附加到相册

参数数量应该是灵活的,例如,应该可以有多个时间范围的相册。所以我想一个额外的表来存储相册和匹配的时间范围之间的关系。

实现此方式的最佳/最佳效果方式是什么?通过简单的album.items调用使{{1}}中的所有项目都可以访问?

我应该如何/在哪里存储动态链接的参数?

1 个答案:

答案 0 :(得分:1)

我认为你可以创建一个ItemSet类,因为每个Album可以有多套标准。 ItemSet可以使用单表继承来使用各种子类(或者你可以用另一种方式实现这种行为;参见here),你可以在每个子类中定义items方法,具体取决于它是哪种ItemSet(基于日期,标志集等)。 album.items将是items中每个album.item_sets的联合。