2016-10-04 98 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