Bonjour à tous,
J'ai un souci dans l'appel d'un méthode associé à une class que j'ai définit :
ma classe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Class User < ApplicationRecord before_save :init def ban self.status = "ban" self.save puts self end def to_s status.to_s + " " + id.to_s end def init self.status = "actif" end end
Dans mes tests en fonction de la façon dont j'appel la fonction ban j'obtient deux résultat différents.
résultats :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 test "bannissement methode 1" do user=User.new user.save user.ban puts User.all end test "bannissement methode 2" do user=User.new user.save User.all.first.ban puts User.all end
Je comprend pas pourquoi les deux test renvoi un résultat différent.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 test 1: >>ban 1 # sortie du puts de la méthode ban >>ban 1 # sortie du puts User.all du test test 2: >>ban 1 # sortie du puts de la méthode ban >>actif 1 # sortie du puts User.all du test
l'idée serait de pouvoir utilisé la méthode ban dans un bloc each avec un truc du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 users = User.where(comportement: "boulet") users.each{|user| user.ban}
Partager