Rails:为模型中的字段赋值

时间:2013-04-29 21:17:51

标签: ruby activerecord ruby-on-rails-3.2

我有两个字段,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

有人可以帮忙解决这个问题吗?

1 个答案:

答案 0 :(得分:4)

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

def brand_name
  self[:brand_name].present? ? self[:brand_name] : first_name
end