向帖子添加类别的最佳方法是什么 - Ruby on Rails博客

bga*_*oci 7 ruby ruby-on-rails

我是Ruby和Rails的新手,请耐心等待.我创建了一个非常简单的博客应用程序,其中包含帖子和评论.一切都很好.关于添加类别的下一个问题.我想知道最好的方法.因为我不能在我面前看得太远但是当谈到Rails时我想我会问.

要明确的是,我希望一个帖子可以有多个类别,一个类别可以有多个帖子.

最好的方法是创建"类别"表,然后使用帖子和类别模型来做has_many :posts,has_many :categories?我是否也会设置routes.rb帖子嵌入类别?

或者通过简单地将类别列添加到现有posts表中是否有更简单的方法?(在这种情况下,我会想象有多个类别会很困难).

Jer*_*iko 19

这取决于你愿意投入多少努力 - 你可以使用标记插件,或has_and_belongs_to_many在帖子和类别模型中建立关系,但我建议有点不同.

如果您创建第三个模型"分类",作为帖子和类别之间的一种"粘合剂",您可以拥有更多控制权.职位has_many :categories :through => categorizations和类别has_many :posts :through => :categorizations

这样做的好处是您的类别不会存储在您的代码中,而是存储在数据库中 - 因此添加/删除/编辑它们不需要您修改任何源代码.如何设置路线完全取决于您 - 您可以/categories/:id返回属于该类别的所有帖子的列表,或使用一个或多个类别作为参数实现某种搜索表单.

Ryan Bates有一个很好的截屏视频解释所有这些,有几种不同的方法来解决这个问题.

我知道你提到你是RoR的新手,所以如果这对你想要的东西有点复杂我会道歉.正如我所说,插件可能最适合您的需求,但我发现如果可能的话,自己编写代码总是很好的,并且具有更多灵活性和控制的额外好处:)


Ben*_*Ben 8

由于你想要类别和帖子之间的多对多关系,我会(并且确实)使用标记插件,例如ActsAsTaggableOn,您可以在其中定义引用"标记"的内容,并将其称为"类别".简单有效.在您的表单中,您可以为不同类别的白名单(例如,"编码","食谱","假期")限制"标签"的可能值.