Rails activerecord 保存时对属性的直接引用和加上 self 的区别

stc · 2012年06月21日 · 最后由 stc 回复于 2012年06月22日 · 2634 次阅读

引伸自http://ruby-china.org/topics/3869, 我发现比如对某条记录做更新,加上一个 before_save,对某个字段做预处理,只有加上 self.some_field = 'blablabla'才起作用,直接 some_filed= 'blablabla' ,结果不会被正确保存。请问是何原因?

匿名 #1 2012年06月21日

some_filed= 'blablabla' Ruby 解释器认为这是对本地变量赋值,而不是方法调用。 加上 self 就明确了

已经有点入魔了,导致最基本的变量赋值都给忽略了,切记切记!!!

这也太坑爹了吧

谢谢各位,懂了。。理解为局部域优先级大于外域。读取时局部没有相应变量,到外部读取。 赋值时直接对局部变量赋值了。再次感谢!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号