gpt4 book ai didi

ruby-on-rails - HABTM,或多个belongs_to?

转载 作者:行者123 更新时间:2023-12-04 12:01:41 24 4
gpt4 key购买 nike

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

在我的简化版本中,我有:

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

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

    HABTM 是三类之间的答案吗?

    很多人都被这种关系卡住了,不是吗? :)

    最佳答案

    Is HABTM the answer between the three classes?



    不。您不需要在任何这些关系中使用 HABTM。

    • What's the proper relationship between users and questions?
    • What's the proper relationship between users and answers?


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

    从逻辑的角度来看,请考虑: 一个问题永远不能由多个用户创建,一个答案不能由多个用户创建。 因此,它不是多对多的关系。

    在这种情况下,你的类应该这样设置:
    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 关系。一个问题可以有多个标签,而一个标签可以有多个问题。作为一个主要示例,您的帖子有三个标签(ruby-on-rails、habtm、外键关系),而 ruby​​-on-rails 标签目前有 8,546 个问题。

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

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com