将分数数据插入到quiz_user连接表中

时间:2017-11-07 11:01:05

标签: ruby-on-rails ruby-on-rails-4

我正在开发一个测验应用程序,我必须跟踪用户以及他们为该测验得分的测验,所以我认为创建一个连接表(has_and_belongs_to_many关系)quizzes_user将有quiz_id ,user_id和得分可能是最好的方法,但我无法将分数插入表中..

任何帮助都将受到高度赞赏..

1 个答案:

答案 0 :(得分:1)

请勿使用has_and_belongs_to_many使用has_many through:

class User < ApplicationRecord
  has_many :results
  has_many :quizzes, through: :results
end

class Result < ApplicationRecord
  belongs_to :user
  belongs_to :quiz
end

class Quiz < ApplicationRecord
  has_many :results
  has_many :users, through: :results
end

由于has_and_belongs_to_many关联没有连接实体的模型,因此没有直接的方法可以直接查询它或将其他列添加到连接表中。

在这里你可以创建&#34;结果/得分&#34;通过类似的东西:

@quiz.results.create(user: current_user, score: 99)

has_and_belongs_to_many实际上只是一个好主意,如果您知道自己从未需要这些功能,并且不会通过实例化连接模型来节省内存。只有当连接实体不是实际的东西时才会出现这种情况。在自身。