我不明白为什么我会在下面收到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
由于
答案 0 :(得分:2)
当你在模型中的方法中时,如果只使用属性名称,它会将其视为变量,其范围仅限于此方法。使用self.attribute实际上将访问模型中的基础字段,并允许您分配值。
作为一项基本规则,只要您在模型中实际分配值,就应始终使用
self.attribute = value
从侧面来看,我不确定你的代码是否仅作为示例,但它不喜欢看你需要的方法。
在控制器中你可以做到
@user.email = email