User
回答とレッスンのリストを保存できるクラスがあります
has_many :answers
has_many :lessons, :through => :answers
回答クラス:
class Answer < ActiveRecord::Base
belongs_to :user
belongs_to :lesson
attr_accessible :finished, :current_solution
end
ユーザーがレッスンに取り組むたびに、彼の最新の回答を保存したいと思います。私はこのようにそれをやろうとしました:
if current_user
@lesson = Lesson.find(params[:id])
@code = request.request_parameters["code"]
@user = User.find(session[:user_id])
begin # retrieve an old answer, if possible
@answer = Answer.find [params[:id], session[:user_id]]
rescue
end
if not @answer # else create a new one
@answer = Answer.new
@answer.lesson_id = @lesson.id
@answer.user_id = @user.id
@user.answers << @answer # store it in the user's answers list
end
@validation_passed = @lesson.validate( @code )
@answer.finished = @validation_passed # update answer
@answer.current_solution = @code
データベーススキーマ:
create_table "answers", :id => false, :force => true do |t|
t.integer "lesson_id", :null => false
t.integer "user_id", :null => false
t.string "finished"
t.string "current_solution"
end
add_index "answers", ["lesson_id", "user_id"], :name => "index_answers_on_lesson_id_and_user_id", :unique => true
例外columns lesson_id, user_id are not unique
、またはcolumns lesson_id, user_id are not unique: INSERT INTO "answers" ("current_solution", "finished", "lesson_id", "user_id") VALUES (?, ?, ?, ?)
が発生しますが、対応する座標でオブジェクトが見つからない場合にのみ新しいオブジェクトを作成するため、なぜそれが発生するのかわかりません。
誰かが私が間違ったことを教えてくれたら嬉しいです。
前もって感謝します!:)