我正在自学Rails,并且作为测试项目,我在模拟一个类似于stackoverflow的简单问题/答案应用程序。

在简化版本中,我有:

  • 问题
  • 答案
  • 用户(问题和答案的作者)
  • 我知道答案属于问题。
  • 用户和问题之间的正确关系是什么?
  • 用户和答案之间的正确关系是什么?

  • 在我看来,问题和答案并不是真正的“属于”用户,而是问题和答案“有一个用户”(作者)。但这似乎也不对,因为那样的话,用户将“belong_to问题”和“belong_to回答”。

    HABTM是这三个类(class)之间的答案吗?

    很多人陷入这种关系的事情,不是吗? :)

    最佳答案



    不需要。在任何这些关系中都不需要HABTM。



    在这两种情况下,这都是一对多的关系:用户有很多问题,而用户有很多答案。

    从逻辑角度来看,请考虑以下问题:一个问题永远不能由多个用户创作,一个答案不能由多个用户创作。 这样,这不是多对多的关系。

    在这种情况下,您的类(class)应该像这样设置:

    class User < ActiveRecord::Base
      has_many   :questions
      has_many   :answers
    end
    
    class Question < ActiveRecord::Base
      belongs_to :user
      has_many   :answers
    end
    
    class Answer < ActiveRecord::Base
      belongs_to :user
      belongs_to :question
    end
    

    另一方面,如果您具有类似于StackOverflow的标记系统,则需要HABTM关系。一个问题可以有很多标签,而一个标签可以有很多问题。举一个主要的例子,您的帖子有3个标签(ruby-on-rails,habtm,foreign-key-relationship),而ruby-on-rails标签目前有8,546个问题。

    关于ruby-on-rails - HABTM,还是多个belongs_to?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2054729/

    10-11 10:23