在Rails模型上“不支持:TrueClass”

时间:2016-10-04 00:51:11

标签: ruby-on-rails

我在rails user.rb模型中有以下方法:

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引起的。任何人都可以帮我摆脱这个错误吗?

1 个答案:

答案 0 :(得分:2)

@users = User.where(first_name == self.first_name)
你是说

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

您拥有的第一行将评估为

@users = User.where(true)

然后Rails会感到困惑,为什么你试图找出“真实”的用户...可能会导致你得到的错误。