Ce code ne télécharge pas la valeur prévue dans la base de données. Je m'attendais à ce que si 2001 existe déjà comme valeur student_number pour un enregistrement qui a un autre site de colonne 1 (représenté par site_id), alors nous incrémentons student_number par 1 donc la prochaine valeur de student_number pour ce site serait 2002 et la prochaine valeur 2003 et ainsi sur. Cependant, pour une raison ici, si 2001 existe, il retourne juste une valeur de 1, puis pour l'enregistrement suivant créé, il retourne une valeur de 1 à nouveau et ainsi de suite:incrémenter la valeur d'une colonne en fonction de la valeur d'une autre colonne
modèle étudiant:
def test!
update_attributes :updater_id => User.current_user.id,
:student_number =>
sitenum = self.site_id
count = Student.count_by_sql("SELECT MAX(student_number) FROM students WHERE site_id = #{sitenum}")
if count >= 2001
Student(:condition => { :site_id => sitenum },
:order => "student_number DESC").student_number + 1
else
2001
end
end
étudiants contrôleur:
def test_finalize
if @student.update_attributes(params[:student]) && @student.test!
@student.save
end
end
Toute idée de la façon d'augmenter par 1 si 2001 existe? Merci pour vos suggestions
et ce qui se passe si une insertion dans la table des élèves se produit au cours? –