0

我有一个模型,它可能与零个或多个静态值相关联。例如,电影和流派(恐怖片、动作片等)我想genres在我的模型上创建一个数组,但我不确定在数据库中反映这一点的最佳方式。

我正在使用 Rails/AR 4 和 Postgres 以及pg_searchgem。

我可以走创建genres表并在两者之间创建连接表的经典路线。但是,这似乎有点矫枉过正,因为genres不要经常更改。

我可以创建一个genre枚举类型,然后genre在模型上创建一个 s 数组,但我不确定 Active Record 对这种机制的支持程度。

我需要能够根据类型和其他标准(关键字、长度、评级等)搜索电影

任何最佳实践和/或资源将不胜感激。我是否缺少更简单或更直接的解决方案?上述任何一项都无法以我没有预料到的方式解决我的问题吗?

4

1 回答 1

2

我建议使用其他表而不是数组。

如果您想拥有自由文本,则数组很好。在这里,你真的很想拥有资源。如果您有“科幻”类型,并且在意识到没有人了解 scifi 是什么之后,决定将其重命名为“scifi/fantasy”,那么您现在必须迭代所有电影并检查是否使用了 scifi 名称。

使用外国桌子,这很容易。您的电影有一个genre_id 列,并且您的流派行有一个名称列,您可以更改该列来更改所有电影。

数组的一个很好的用途是描述电影的详细和临时属性,例如气氛特征、创新特性以及任何可能不会用于几部电影并且应该被充分编辑的事物列表。

另请注意,就目前而言,rails 中的 postgres 数组支持并不完美,您可能必须处理一些故障。

于 2013-09-22T13:43:32.940 回答