Rails - 在数据库中保存 "Given Answer" 的最佳方式?

Rails - Best way to save "Given Answer" in database?

我正在 Rails 上用 Ruby 制作一个测验应用程序,我有一个模型 "Answer"。现在我需要将用户对问题给出的答案保存到数据库中,所以我想我会制作一个模型 "GivenAnswer" 并将这些现有模型作为属性匹配控制器:

我将把所有用于分析给定答案的逻辑放入 "GivenAnswers" 控制器中,但我不确定数据库迁移应该是什么样子。另外,我希望在 "User" 和 "Question" 上有索引,因为我要经常显示 "answers per user" 和 "answers per question"。我生成了这个迁移:

class CreateGivenAnswers < ActiveRecord::Migration[5.0]
  def change
    create_table :given_answers do |t|
      t.references :user, foreign_key: true
      t.references :question, foreign_key: true
      t.references :answer, foreign_key: true

      t.timestamps
    end
  end
end

但我想知道 table 是否应该是纯关系型的:

class CreateGivenAnswers < ActiveRecord::Migration[5.0]
  def change
    create_table :given_answers, id:false do |t|
      t.belongs_to :user, index: true
      t.belongs_to :question, index: true
      t.belongs_to :answer
    end
  end
end

我是 Rails 初学者,非常感谢您的指点。

belongs_toreferences 的别名,因此使用哪一个都没有区别。

在这种情况下不要删除 id 列。

任何外键也应该是一个索引。

我会这样做:

class CreateGivenAnswers < ActiveRecord::Migration[5.0]
  def change
    create_table :given_answers, id:false do |t|
      t.references :user, index: true, foreign_key: true
      t.references :question, index: true, foreign_key: true
      t.references :answer, index: true, foreign_key: true
    end
  end
end

但我认为您不应该将 Answer 直接与 GivenAnswer 联系起来。将 AnswerQuestion

联系起来更有意义