在rails上的ruby中使用self进行数据库字段更新

时间:2012-04-11 20:59:06

标签: ruby-on-rails

我不明白为什么我会在下面收到nil错误。但是当我添加self时,我没有收到错误,所有内容都被分配了更正。你能解释一下为什么我不使用self这不起作用吗?

模型/ user.rb

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

控制器/ users_controller

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

由于

1 个答案:

答案 0 :(得分:2)

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

作为一项基本规则,只要您在模型中实际分配值,就应始终使用

self.attribute = value

从侧面来看,我不确定你的代码是否仅作为示例,但它不喜欢看你需要的方法。

在控制器中你可以做到

@user.email = email