我想创建像博客一样的东西。
帖子必须属于某个类别。每个类别都有许多标签(或子类别?)。帖子可以有标签(可选)。
这是最好的方法吗?
Category
has_many :tags
has many :posts
Tag
belongs_to :category
has_and_belongs_to_many :posts
Post
belongs_to category
has_and_belongs_to_many :tags
答案 0 :(得分:0)
我会改用polymorhic associations。这样可以很好地控制标签集(标签数量,可用标签等),但会降低基于标签的搜索速度。
另一种方法是使用您选择的数据库中的全文搜索功能。 这将为您提供基于标签的快速搜索,但标签设置操作速度较慢。
答案 1 :(得分:0)
由于你给出的模型的模式几乎就是你所写的句子的精确翻译,是的,它应该是最好的方式!
对于标签,您可能希望使用插件,请参阅:tagging plugins list order by ranking