有时候想修改一下自己的setter方法,于是会容易犯这样的一个错误:
1 2 3 4 5 6 |
|
最后那行使用了self.password= xxx,你有没有注意到我们这个方法就是password=,你在自己调用自己,如果有条件停止的话,那这叫递归,如果没有的话,这就是死循环喽,ruby可能会抛出一个stack too deep的错误(rails至少会这样说),此时需要一个magic!
1
|
|
使用write_attribute(xxx,jjj)即可,意思就是把jjj赋值给xxx了,因为此时正好在定义xxx,所以不能用xxx = 这样的方法赋值。