在“has_many:through”和“has_and_belongs_to_many”之间选择的rails

时间:2015-05-17 11:38:01

标签: ruby-on-rails activerecord

我正在尝试选择正确的关联方法。

我有一个帖子模型和一个类别模型。我想要一个帖子属于许多类别和类别,有很多模型。

api doc说

  

如果您需要将关系模型作为自己的实体使用,请使用has_many:through。在使用旧模式时或者从不直接使用关系本身时,请使用has_and_belongs_to_many。“

我并不完全明白关系模型的含义

我将要做的事情包括。

  1. 显示与帖子相关联的类别
  2. 显示与某个类别相关的所有帖子。
  3. 我的问题,哪个协会允许我在上面做? 我的偏好是has_and_belongs_to,因为它似乎是直接关联

    由于

1 个答案:

答案 0 :(得分:1)

两者都可以完成这项工作,但是has_and_belongs_to_many更容易设置并使用更少的代码。

请参阅我对this question的回答以寻求帮助。

关注关系模型,根据您的描述,您不需要它。但只是让你知道它是什么,你需要在数据库中使用三个表来实现多对多关系。中间表称为连接表,您可以在上面提到的答案中看到一个。如果为连接表创建模型,那就是关系模型。优点是您可以使用它来保存您认为对关系重要的信息。缺点是额外的复杂性(有时值得),然后你应该使用更详细的has_many:through方法。