我的测验模型应该在哪里实例化'?

时间:2014-12-15 13:09:06

标签: ruby-on-rails model

我可能(仍然)以错误的方式思考这个问题,但我遇到的错误是

"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

1 个答案:

答案 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

相关问题