Ruby on rails 轨道-轨道用户';s";行动“;使用关系模型

Ruby on rails 轨道-轨道用户';s";行动“;使用关系模型,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我正在开发一个数学练习应用程序。我想存储分为练习的问题,每个练习属于不同的部分。每个年级也有多个部分(总共12个年级) 如何跟踪用户的回答(操作)?例如,当用户浏览应用程序时,决定回答“Pre-K”等级“G”部分练习“G1”中的问题7,并提供正确答案,我希望跟踪这一点,并在将来向他提供有关其表现的统计数据 目前,我的用户模型与这些问题之间没有任何联系,我想听听其他人的意见,看看什么是解决这个问题的最有效方法(也许现在的模型完全错了) 这是目前的模型图,其中有许多,属于关系(稍后我将在问题模型中添

我正在开发一个数学练习应用程序。我想存储分为练习的问题,每个练习属于不同的部分。每个年级也有多个部分(总共12个年级)

如何跟踪用户的回答(操作)?例如,当用户浏览应用程序时,决定回答“Pre-K”等级“G”部分练习“G1”中的问题7,并提供正确答案,我希望跟踪这一点,并在将来向他提供有关其表现的统计数据

目前,我的用户模型与这些问题之间没有任何联系,我想听听其他人的意见,看看什么是解决这个问题的最有效方法(也许现在的模型完全错了)

这是目前的模型图,其中有许多,属于关系(稍后我将在问题模型中添加'TheQuestion':string和'answer':string):

我认为缺少的只是一个与用户相连的
答案
模型

或者,您也可以在
问题
的“父项”上定义关系

class Grade < ActiveRecord::Base
  has_many :users, :through => :sections # optional. i.e. 'users that have answers in this grade'
end

class Section < ActiveRecord::Base
  has_many :users, :through => :exercises # optional
end

class Exercise < ActiveRecord::Base
  has_many :users, :through => :questions # optional
end

class Question < ActiveRecord::Base
  has_many :answers
  has_many :users, :through => :answers # optional
end

class Answer < ActiveRecord::Base
  belongs_to :question
  belongs_to :user
end

class User < ActiveRecord::Base
  has_many :answers
end
等级:节#可选。i、 e.“回答此级别的用户”
结束
类节:练习#可选
结束
课堂练习:问题#可选
结束
类问题:答案#可选
结束
类答案

更新:重新阅读您的描述,我认为
CorrectAnswer
Answer

更合适,为每个问题实例化至少四个答案不会增加开销吗?我想把答案存储在问题里面,但我不认为这是开销——我想这就是你使用数据库的原因。当然,例如,您可以将用户ID放入
问题
中的序列化数组中,但我不认为这样做有什么好处。是的,您可以在该表中保存一个表和列,但也可以将所有内容推入
Grade
,然后忘记您有一个数据库;)顺便说一句,你能澄清一下“每个问题至少列举四个答案”是什么意思吗?我的建议应该是这样的:当用户回答一个问题时,你检查它是否正确,如果正确,你创建一个新的答案(将用户和问题的ID作为外键)。我需要显示4个可能的答案,用户需要选择正确的答案。另一方面,在一些问题中,用户需要在没有选项的情况下猜测正确答案。好的,您可以做的是:使用
答案
模型存储问题的可能答案。如果一个问题只有一个答案,不要显示它。如果它有更多的
答案
,则显示它们并让用户选择。然后,创建一个新模型
UserAnswer
,并用它跟踪用户的答案(标题中称为“操作”)。您可以为用户做出的每个回答创建一个新的
UserAnswer
,并设置一个
correct
标志。(然后,您可以计算所有
UserAnwers
where correct==false以获得错误答案)。或者使用计数器进行错误的尝试,然后重新使用
UserAnswer