2016-10-04 3 views
0

У меня есть следующий метод в моих рельсах user.rb модели:`неподдерживаемый: TrueClass` на 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 .... – Liz

+0

Thay - это другой вопрос :) , но вы пробовали это: http://stackoverflow.com/questions/ 4536855/integer-ordinalization-in-ruby-rails –

+1

Awesome. Я проверю это. Спасибо! – Liz

Смежные вопросы