Ich habe den folgenden Code in meinem Controller:Schienen 5: Wie umgestalten diese Controller-Code auf das Modell?
class VocabsController < ApplicationController
before_action :require_login, except: [:index, :quiz, :answer, :result]
...
def quiz
#Initiate score session
session[:score] ||= 0
#Initiate session to hold questions already asked
session[:already_asked] ||= []
#Total score
session[:amount_questions] = Vocab.all.length
#Get list of words that hasn't been asked before
@left_words = Vocab.all.where.not(id: session[:already_asked])
#Questions remaining
@questions_remaining = @left_words.length - 4
#Pick four words from leftover words list
@four = @left_words.shuffle.take(4)
#Create question variable if there are enough words left in list
if @left_words.length >= 4
@question = @four.first.word
else
redirect_to result_path
end
#save score to user database if all questions done and logged in
if @questions_remaining == 0
high_score = Score.new
high_score.user_id = session[:user_id]
high_score.score = session[:score]/session[:amount_questions].to_f
high_score.save
redirect_to result_path
end
end
def answer
#Keep score and question id's already asked
if params[:answer] == params[:orig]
session[:score] += 1
session[:already_asked] << params[:answer].to_i
flash[:notice] = "You got it right!"
redirect_to quiz_path
else
session[:already_asked] << params[:orig].to_i
flash[:notice] = "Sorry, wrong answer!"
redirect_to quiz_path
end
end
Und ich habe folgendes Modell:
class Vocab < ActiveRecord::Base
validates :word, :definition, presence: true
end
ich auf die dünne Controller Fett Modelle Paradigma einhalten zu lernen bin versucht, aber da Rails Sitzungsvariablen können nicht an das Modell übergeben werden. Wie würde ich dies zum Modell umgestalten?
Diese Frage gehört nicht hierher und sollte in [CodeReview] (http: // codereview. stackexchange.com/). – 31piy