2

コードの匂いがして、簡単な更新を行うか、以下のスニペットのようなクエリを作成するためのヘルパーが不足していると確信しています。

  @user_answer = current_user.user_answers.find_by_question_id(params[:a_question])
  if @user_answer.nil?
    @user_answer = current_user.user_answers.build({ :answer_id => params[:an_answer] , :question_id => params[:a_question] })      
    @user_answer.save  
  else
    @user_answer.update_attributes(:answer_id => params[:an_answer])
    @user_answer.save 
  end
4

2 に答える 2

4

find_or_initialize_byメソッドを探しているかもしれません。例えば:

@user_answer = current_user.user_answers.find_or_initialize_by_question_id(params[:a_question])
@user_answer.answer_id = params[:an_answer]
@user_answer.save
于 2012-11-01T03:15:19.407 に答える
0

どうですか、

@user_answer = current_user.user_answers.find_or_create_by_question_id(params[:a_question])

これにより、明示的な保存が回避されます

于 2012-11-01T04:15:25.180 に答える