我正在开发一个测验应用程序,我必须跟踪用户以及他们为该测验得分的测验,所以我认为创建一个连接表(has_and_belongs_to_many关系)quizzes_user将有quiz_id ,user_id和得分可能是最好的方法,但我无法将分数插入表中..
任何帮助都将受到高度赞赏..
答案 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
实际上只是一个好主意,如果您知道自己从未需要这些功能,并且不会通过实例化连接模型来节省内存。只有当连接实体不是实际的东西时才会出现这种情况。在自身。