양식 레일 : 나는 양식 결과를 저장하면퀴즈 질문의 유효성을 검사하는 방법은 선택과 함께 퀴즈를 보여주는 아주 기본적인 형태가
<%= form_tag(quiz_attempts_path, :method =>'post') %>
<% @course_step.step.step_quiz.step_quiz_questions.each do |quiz_question| %>
<h3><%= quiz_question.value %></h3>
<% quiz_question.step_quiz_question_choices.each do |quiz_question_choice| %>
<%= radio_button_tag("quiz_questions[#{quiz_question.id}]", quiz_question_choice.value, false)%>
<%= quiz_question_choice.value%><br />
<% end %>
<% end %>
<%= hidden_field_tag('step_quiz_id', @course_step.step.step_quiz.id)%>
<%= hidden_field_tag('started', Time.now.utc)%>
<%= submit_tag("Submit Quiz")%>
</form>
, 나는 단지 요약 데이터를 저장합니다 (I가 필요합니까를 데이터 모델의 일종으로이 방법에 오는 유효성을 검사?)
def create
correct = 0
incorrect = 0
params[:quiz_questions].each do |step_quiz_question_id, chosen_answer|
if StepQuizQuestion.find(step_quiz_question_id).correct?(chosen_answer)
correct += 1
else
incorrect += 1
end
end
QuizAttempt.create(:patient_id => current_user.id, :correct => correct, :incorrect => incorrect, :started => params[:started], :ended => Time.now, :step_quiz_id => params[:step_quiz_id])
end
아래 난에 저장하고 내 퀴즈 시도 모델입니다.
class QuizAttempt < ActiveRecord::Base
belongs_to :step_quiz
belongs_to :patient
attr_accessible :step_quiz_id, :patient_id, :started, :ended, :correct, :incorrect
end
# == Schema Information
#
# Table name: quiz_attempts
#
# id :integer not null, primary key
# step_quiz_id :integer
# patient_id :integer
# started :datetime
# ended :datetime
# correct :integer
# incorrect :integer
# created_at :datetime
# updated_at :datetime
#
가 어떻게 코드를 많이하지 않고 양식을 확인할 것인가?
내 일반적인 접근 방식이 맞습니까?
모델에서 이러한 종류의 유효성 검사를 수행하면 컨트롤러를보다 깨끗하게 유지 보수 할 수 있습니다. – RubyFanatic
@rubyfanatic 질문 데이터가없는 모델에서 어떻게 유효성을 검사합니까? (그냥 요약 데이터) 위 모델 참조 –