Rails - 在数据库中保存 "Given Answer" 的最佳方式?
Rails - Best way to save "Given Answer" in database?
我正在 Rails 上用 Ruby 制作一个测验应用程序,我有一个模型 "Answer"。现在我需要将用户对问题给出的答案保存到数据库中,所以我想我会制作一个模型 "GivenAnswer" 并将这些现有模型作为属性匹配控制器:
"User"
"Question"
"Answer"
我将把所有用于分析给定答案的逻辑放入 "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_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
联系起来更有意义
我正在 Rails 上用 Ruby 制作一个测验应用程序,我有一个模型 "Answer"。现在我需要将用户对问题给出的答案保存到数据库中,所以我想我会制作一个模型 "GivenAnswer" 并将这些现有模型作为属性匹配控制器:
"User"
"Question"
"Answer"
我将把所有用于分析给定答案的逻辑放入 "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_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