2016-10-04 3 views
0

Ich habe die folgende Methode in meiner Schiene user.rb Modell:`nicht unterstützt: TrueClass` on Rails Modell

before_save :set_username 

    private 

    def set_username 
    @users = User.where(first_name == self.first_name) 
    same_first_name_array = [] 
    @users.each do |u| <<<<<<<ERROR CALLED ON THIS LINE>>>>>>>> 
     same_first_name_array << u.first_name 
    end 

    if same_first_name_array.size == 0 
     self.username = first_name 
    else 
     self.username = first_name + " the " + ordinalize(same_first_name_array.size + 1) 
    end 
    end 

Wenn ich versuche, ein user ich in der angegebenen Leitung erhalte einen unsupported: TrueClass Fehler zu aktualisieren. Ich bin nicht vertraut mit Fehler, aber habe das Gefühl, dass es durch die each verursacht wird. Kann mir jemand helfen, diesen Fehler loszuwerden?

+0

'@users = User.where (first_name == self.first_name)' Problem ist in dieser Zeile, Sie sind Abfrage ist nicht richtig – Eric

Antwort

2
@users = User.where(first_name == self.first_name) 

tun Sie

@users = User.where(:first_name => self.first_name) 

Die erste Zeile Sie auswerten müssen bedeuten,

@users = User.where(true) 

und dann wird Rails verwirrt, warum Sie versuchen, Benutzer zu holen, wo „true "... verursacht wahrscheinlich den Fehler, den Sie bekommen.

+0

Ja, ich meine sicherlich, dass! Vielen Dank. Jetzt kämpfe ich nur 'undefined Methode' ordinalize '' auf der letzten Zeile des if/else .... – Liz

+0

Thay ist eine andere Frage :) aber haben Sie das versucht: http://stackoverflow.com/questions/ 4536855/Integer-Ordinalization-in-Ruby-Schienen –

+1

Ehrfürchtig. Ich werde das überprüfen. Vielen Dank! – Liz

Verwandte Themen