我希望这很容易...... =)
我有一个问题对象,一个最喜欢的对象,问题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
答案 0 :(得分:1)
我认为你在这里犯的错误是指直接关联的外键。相反,依赖关联作为对象。创建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实例分配给指定的关联时,它会根据需要将其挂起,因此您无需直接更新问题。
答案 1 :(得分:1)
Model.create
返回新创建的模型的实例,这对您尝试执行的操作很有用。这意味着:
@favanswer = Favanswer.create(favanswer_params.merge(user: current_user, question_id: @question))
Question.update(@question, :favanswer_id => @favanswer.id)
将完成你所追求的目标。
答案 2 :(得分:0)
... SMH
想出来=)
@L = Favanswer.create(favanswer_params.merge(user: current_user, question_id: @question))
Question.update(@question, :favanswer_id => @L.id)