2016-10-04 102 views
0

TrueClass`我有以下的方法在我的軌道user.rb型號:`不受支持:on Rails的型號

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 

當我嘗試更新user我上標明的路線得到unsupported: TrueClass錯誤。我不太熟悉TrueClass錯誤,但有一種感覺,它是由each造成的。任何人都可以幫助我擺脫這個錯誤?

+0

'@users = User.where(first_name == self.first_name)'問題就在那一行上,你查詢不對 – Eric

回答

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

你的意思

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

你必須將評估爲

@users = User.where(true) 

,然後Rails會感到困惑,爲什麼你要取出來的用戶,其中「真正的第一行「......可能會導致你得到的錯誤。

+0

是的,我當然確實這樣做!謝謝。現在我只是在if/else的最後一行對'未定義方法'ordinalize''進行對抗...... – Liz

+0

Thay的另外一個問題:) 但你有沒有試過這個:http://stackoverflow.com/questions/ 4536855 /整數ordinalization-in-ruby-rails –

+1

太棒了。我會檢查出來的。謝謝! – Liz