在创建控制器ruby on rails中传递新的对象id



我希望这很容易....=)

我有一个question对象,和一个favanswer对象,question has_one favanswer, favanswer belongs_to question。我在我的问题模型中有一个favanswer_id列和索引,我试图将新发布的favanswer_id传递到相应的问题对象的favanswer_id字段。也许比这复杂得多,或者简单得多。但在favanswer_controller中,我在创建动作中有以下内容,我只是想弄清楚如何纠正第6行,或者我需要做的任何事情,因为没有6它工作正常,它只是不更新我的问题模型……帮助?

  1 def create
  2
  3  @answer = Answer.find(params[:answer_id])
  4  @question = @answer.question_id
  5  Favanswer.create(favanswer_params.merge(user: current_user, question_id: @question))
  6  Question.update(@question, :favanswer_id => "HOW DO I PASS THE NEW FAVANSWER ID HERE?")
  7  redirect_to question_path(@question)
  8
  9 end

我认为你在这里犯的错误是直接引用了关联的外键。相反,依赖作为对象的关联。当您创建Favanswer时,传入@answer.question对象而不是id。另外,不要把它传递给question_id,而要传递给question

def create
  @answer = Answer.find(params[:answer_id])
  @question = @answer.question
  Favanswer.create(favanswer_params.merge(user: current_user, question:     @question))
  redirect_to question_path(@question)
end

Rails是友好的,当您将Question实例分配给命名关联时,它会根据需要将其连接起来,因此您不需要直接更新Question。

Model.create返回新创建的Model的一个实例,这对于您正在尝试做的事情很有用。这意味着:

@favanswer = Favanswer.create(favanswer_params.merge(user: current_user, question_id: @question))
Question.update(@question, :favanswer_id => @favanswer.id)

会完成你想要的。

smh…

figure it out =)

@L = Favanswer.create(favanswer_params.merge(user: current_user, question_id:    @question))
Question.update(@question, :favanswer_id => @L.id)

相关内容

  • 没有找到相关文章

最新更新