Rails Rails 的默认 return,躺着都中枪!大家小心啊...

zhaoguobin · 2012年04月16日 · 最后由 flyerhzm 回复于 2012年04月30日 · 3476 次阅读

为程序加了几句代码,果断中枪!

before_create :bc

def bc
    if e.blank?
        e = false
    end
end


因为newe基本上是nil,所以悲剧产生了,永远无法 create! rails 默认把e = false作为了 return!!!

我觉得这个 callback 里面返回 false 的陷阱,只要做过 rails 项目的人都会中招

同样中过枪。这属于 ruby 范畴,默认会返回最后一句,如果一句也没有返回空。 http://rubyer.me/blog/1438/

我的习惯是方法最后一定要写上 return,就是怕遇到这种事请

我只要看到 if else 之类的就敏感,哈哈

经验不多。。还没中过枪。。先记下来。。

应该是 if 本身返回空了吧

哈哈,中过一次基本就免疫了,gxgx

不久之前中过一次……

-.-只写 return 那是返回啥了 我试试

这是要设置默认值吗?可以在 Migration 中指定默认值,这样的代码就不用写了。

好像 callback 是把 callback 的函数做成返回的,上次看视频的时候有讲过 before_save,不过我不怎么用 callback,看来以后是得小心了

我个人认为在 filter 里面用 throw 来打断比较好

中过,还好是单元测试时发现的

#12 楼 @ShiningRay 这个不是 filter,是 callback。controller 的 filter 的只能用 render 或者 redirect_to 打断。

#14 楼 @zhangyuan 我是说如果让我来设计的话,我没说 rails 的情况

我都在 callback 结尾处显示返回 true

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