我可能(仍然)以错误的方式思考这个问题,但我遇到的错误是
"Couldn't find Quiz with 'id'=39"
产生此错误的行是:
if (Quiz.find(current_user.id))
...
我认为此代码有两个问题:
1)测验表有一个user_id列,用于将其与用户相关联,但我(无意中)正在寻找测验的ID。
2)测验永远不会被实例化,所以,即使我在测验中查找了user_id属性,也没有可以查找的测验。
我想知道在我的Rails代码中我应该首先创建测验。这是在创建用户时应该发生的事情吗?如果是这样,那么测验是否应该被实例化并且在#39;用户中的@quiz变量?而在哪种方法?新?建立?初始化?创建?
我认为,这个实例化需要包括将新测验的user_id设置为current_user.id,所以在current_user甚至无法访问之前,我不知道模型中是如何发生的。
任何线索,非常感谢。
BTW,用户has_one :quiz
和测验belongs_to :user
答案 0 :(得分:0)
您可以通过多种方式找到您的测验:
Quiz.where(user_id: current_user.id)
current_user.quiz
如果您使用Quiz.find(5)(这就是您的Quiz.find(current_user.id)
,那么您正在做的是搜索id = 5的Quizz
您可以按如下方式创建测验:
虽然是用户:
@quiz = current_user.build_quiz attribute_hash
或
@quiz = Quizz.new user_id: current_user.id, other: :attributes
然后@quiz.save