所以我有一个 MySQL 驱动的 Rails 应用程序,它有一个帖子模型,我希望每个帖子都有一个与之关联的关键字列表。关键字非常具体,一个关键字在两个帖子之间共享是非常罕见的。
这里有三个选项:
- “关键字”属性中的逗号分隔列表
- 在“关键字”属性中有一个序列化数组
- 建立关键字模型并将每个关键字存储在自己的记录下,并将它们与具有 ID 的帖子相关联
哪个是最好的解决方案,为什么?
所以我有一个 MySQL 驱动的 Rails 应用程序,它有一个帖子模型,我希望每个帖子都有一个与之关联的关键字列表。关键字非常具体,一个关键字在两个帖子之间共享是非常罕见的。
这里有三个选项:
哪个是最好的解决方案,为什么?
关键字/标签非常有用,您会想一遍又一遍地使用它们。当好的轮子免费躺在那里时,你只是在重新发明一个轮子。
如果您想搜索标签,3,否则您将不得不或实例化搜索中的每个对象,或者执行类似 SQL 的查询,这将非常难看。
如果您不想查询标签,请将其序列化以使其可读并避免为此而使用表(和急切加载)。
一般来说,决定取决于您计划使用此关键字列表的目的。如果您打算对多条记录进行任何类型的聚合,将其放入单个属性(序列化或逗号)将使您的生活变得艰难。如果不是简单的总是一个不错的选择。
正如@Mori ActsAsTaggable 所提到的,尽管它最适合共享关键字(标签),但它是一个不错的选择。