我希望这很容易....=)
我有一个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)