标记系统的多态与HABTM关系

时间:2011-05-07 21:58:37

标签: database has-and-belongs-to-many relationships polymorphism

我目前正在为rails应用程序创建一个数据库。此架构涉及三种模型:照片,对象和标签。照片和物品都需要“可标记”。

  • 标签是唯一的
  • 标签可以属于照片,或对象,或两者兼有

Rails提供了一种多态关联,导致标签与Photo和Object都具有belongs_to关系;但是它不允许标签属于两者

有人可以通过为“照片标记”和“标记到对象”提供两个独立的HABTM关系来解决这个问题。

我想知道是否有更有效的方法来实现这一目标;或者我是否正在从错误的方向接近问题?

1 个答案:

答案 0 :(得分:0)

标签是一种说出某事的方式。

使用一组标签来说明各种事情可能没有意义。我可以想象像“1024x768”和“用奥林巴斯相机拍摄”这样的标签在你试图说出一张照片的时候很有用,但如果你试图说一些关于某个物体的话,那就没用了。

假设我使用像“蓝色”这样的标签来指代照片和对象。 {photo_id,“blue”}与{object_id,“blue”}的意思相同吗?我不这么认为。

在我看来,最有效的解决方案是使用一组标签来说明有关照片的内容,使用另一组标签来说明有关对象的内容。它也可能对您的用户更友好。