1

我有两个字段,first_name 和brand_name。用户在登录时输入 first_name。如果他是所有者,则输入 brand_name。当用户创建帐户时,brand_name 默认等于 first_name。用户可以稍后更改。

为此,我在 User 模型中编写了这个方法,

def brand_name
    first_name
end

但是尽管用户输入了不同的brand_name,但它将brand_name 设置为first_name。我尝试这样做:

def brand_name
    if brand_name.nil?
      first_name
    else
      brand_name
    end
end

但给出错误- SystemStackError:

stack level too deep

任何人都可以帮助如何做到这一点?

4

1 回答 1

6

您的方法正在调用自身,这会导致无限递归。像这样重写你的方法:

def brand_name
  self[:brand_name].present? ? self[:brand_name] : first_name
end
于 2013-04-29T21:24:27.333 回答