我正在使用Ruby on Rails制作测验应用程序,其中我有一个模型“答案”。现在我需要保存用户为数据库提出问题的答案,所以我想我会将模型“GivenAnswer”和匹配控制器与这些现有模型作为属性:
“用户”
“问题”
“接听”
我将把用于分析给定答案的所有逻辑放入“GivenAnswers”控制器,但我不确定db迁移应该如何。此外,我想索引“用户”和“问题”,因为我将经常显示“每个用户的答案”和“每个问题的答案”。我生成了这个迁移:
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
但是我想知道表格是否应该是纯粹的关系:
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的初学者,所以我会感谢任何指针。
答案 0 :(得分:1)
belongs_to
是references
的别名,因此您使用的是哪一个没有区别。
在这种情况下,请勿删除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
联系起来。将Answer
与Question