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