1

我不明白为什么我在nil下面收到错误。但是当我添加时,self我没有收到错误,并且所有内容都得到了更正。你能向我解释为什么如果我不使用self它不起作用?

模型/用户.rb

def update_user_email!(new_email)
  email = new_email # When I use self.name = new_email this works
end

控制器/用户控制器

def create
  @user = User.new(params[:user])
  @user.update_user_email!(email)
  @user.save
end

谢谢

4

1 回答 1

2

当您在模型内的方法中时,如果您仅使用属性名称,它将把它视为一个变量,其范围仅限于此方法。使用 self.attribute 实际上将访问模型中的基础字段并让您分配值。

作为基本规则,任何时候你在模型中实际赋值时,你都应该使用

self.attribute = value

另一方面,我不确定您的代码是否只是示例,但它看起来不像您需要的方法。

在控制器中你可以做

@user.email = email
于 2012-04-11T21:58:21.957 回答